Javascript 我的控制器[AngularJs]中出错

Javascript 我的控制器[AngularJs]中出错,javascript,angularjs,angular-material,Javascript,Angularjs,Angular Material,我收到以下错误消息:参数“MainController”不是函数,未定义 这是我的mainController.js文件: angular.module("elcomaApp", []).controller('MainController', ['$scope', 'ElcomaService', function($scope, ElcomaService){ $scope.name = 'Natanael Santos'; console.log($scope.na

我收到以下错误消息:参数“MainController”不是函数,未定义

这是我的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>

{{name}}
在此语句中,删除
MainController

它已在elcomaApp上定义,无需DI。它始终可用

更正:

`

在此语句中,删除
MainController

它已在elcomaApp上定义,无需DI。它始终可用

更正:

`


在app.js文件中,第一行

var-app=angular.module(“elcomaApp”、['MainController','ngMaterial','ngRoute']);

表示您的应用程序依赖于“MainController”模块,而“MainController”模块又依赖于您的应用程序。这行不通。您只需在应用程序中为外部模块添加依赖项。您的模块是“elcomaApp”,并且已经包含了“主控制器”

把那行改成

var-app=angular.module(“elcomaApp”、“ngMaterial”、“ngRoute”)


它应该可以工作。

在app.js文件的第一行

var-app=angular.module(“elcomaApp”、['MainController','ngMaterial','ngRoute']);

表示您的应用程序依赖于“MainController”模块,而“MainController”模块又依赖于您的应用程序。这行不通。您只需在应用程序中为外部模块添加依赖项。您的模块是“elcomaApp”,并且已经包含了“主控制器”

把那行改成

var-app=angular.module(“elcomaApp”、“ngMaterial”、“ngRoute”)


它应该可以工作。

为什么你的
MainController
被列为你自己应用程序的依赖项?您已经在
elcomaApp
模块中编写了它。为什么您的
MainController
被列为您自己应用程序的依赖项?您已经在
elcomaApp
模块中编写了它。问题是覆盖模块定义。谢谢:dw为什么在controler文件:angular.module(“elcomaApp”,[]).controller中放置“[]”是正确的…为了初始化或创建新模块,应该提供
[]
空的DI或DI列表。要获取此模块,只需要模块名称。问题是覆盖模块定义。谢谢:dw为什么在controler文件:angular.module(“elcomaApp”,[]).controller中放置“[]”是正确的…为了初始化或创建新模块,应该提供
[]
空的DI或DI列表。要获取此模块,只需要模块名。
var app = angular.module("elcomaApp", ['MainController', 'ngMaterial', 'ngRoute']);
angular.module("elcomaApp", []).factory`  // will override the module defination

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