2016-09-20 91 views
0

我收到以下消息的錯誤:參數「MainController」不是一個函數,得到了不確定錯誤在我的控制器[AngularJs]

這裏是我的mainController.js文件:

angular.module("elcomaApp", []).controller('MainController', ['$scope',  'ElcomaService', function($scope, ElcomaService){ 
    $scope.name = 'Natanael Santos'; 
    console.log($scope.name); 
    ElcomaService.sucess(function(data){ 
     $scope.elcomaData = data; 
    }) 
}]); 

這裏是我的app.js文件:

var app = angular.module("elcomaApp", ['MainController', 'ngMaterial', 'ngRoute']); 
app.config(function($routeProvider){ 
    $routeProvider.when('/', { 
     controller: 'MainController', 
     templateUrl: 'views/timeline.html' 
    }).otherwise({ 
     redirectTo: '/' 
    }); 
}); 

這裏是我的service.js文件:

angular.module("elcomaApp", []).factory('ElcomaService', ['$http', function($http){ 
    return $http.get('http://vagalumewifi.com.br/timeline.json') 
    .success(function(data){ 

    }) 
    .error(function(err){ 
     return err; 
    }); 
}]); 

我的index.html文件:

<!DOCTYPE html /> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <!-- Angular Material style sheet --> 
    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.css"> 
</head> 

<body ng-app="elcomaApp" ng-controller="MainController" ng-cloak> 


    <md-toolbar class="md-hue-2"> 
     <div class="md-toolbar-tools"> 
     <md-button class="md-icon-button" aria-label="Settings" ng-disabled="true"> 
      <md-icon md-svg-icon="img/icons/menu.svg"></md-icon> 
     </md-button> 
     <h2> 
      <span>{{ name }}</span> 
     </h2> 
     <span flex></span> 
     <md-button class="md-icon-button" aria-label="Favorite"> 
      <md-icon md-svg-icon="img/icons/favorite.svg" style="color: greenyellow;"></md-icon> 
     </md-button> 
     <md-button class="md-icon-button" aria-label="More"> 
      <md-icon md-svg-icon="img/icons/more_vert.svg"></md-icon> 
     </md-button> 
     </div> 
    </md-toolbar> 

    <div ng-view></div> 




    <!-- Angular Material requires Angular.js Libraries --> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-messages.min.js"></script> 

    <!-- Angular Material Library --> 
    <script src="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.js"></script> 

    <script src="app.js"></script> 
    <script src="controllers/mainController.js"></script> 
    <script src="services/elcomaService.js"></script> 

</body> 
</html> 
+2

爲什麼你的'MainController'列爲你自己的應用程序的依賴項?您已經將其寫入您的'elcomaApp'模塊中。 –

回答

1
var app = angular.module("elcomaApp", ['MainController', 'ngMaterial', 'ngRoute']); 

在這份聲明中,刪除MainController

它已經定義在elcomaApp上,不需要DI,它始終可用。

更正:

`

angular.module("elcomaApp", []).factory` // will override the module defination 

`angular.module("elcomaApp").factory('` //correct way 
+0

問題在於重寫模塊定義。謝謝:D – Natanael

+0

爲什麼在控制器文件中放入「[]」是正確的:angular.module(「elcomaApp」,[])。controller ... – Natanael

+1

爲了初始化或創建新模塊,應該提供'[]'空或DI的列表。要獲得此模塊只需要模塊名稱。 –

1

在你app.js文件中,第一行

var app = angular.module("elcomaApp", ['MainController', 'ngMaterial', 'ngRoute']);

是說,你的應用程序是依賴於 'MainController' 模塊,這反過來依賴於你的應用程序。它不會工作。您只需將依賴關係添加到您的應用程序中以用於外部模塊。你的模塊 「elcomaApp」,並且已經包含了你的 'MainController'

把上面一行

var app = angular.module("elcomaApp", ['ngMaterial', 'ngRoute']);

,它應該工作。