angularjs - 在预定义模块中添加控制器不起作用

时间:2016-06-20 05:11:37

标签: angularjs

在我的app中,我在注册到应用程序的模块中使用了modules名称作为module而不是单独myApp.controllers。稍后我要向现有的controller添加新的myApp.controllers,但它无效。

这里有什么问题?

这是我的代码:

angular.module('myApp.controllers', []);

var appModules = ['myApp.controllers']

var app = angular.module('myApp', [appModules]);

angular.module('myApp.controllers').controller('mainController', ['$scope', function($scope){

  $scope.name = "World";

}])

Live Demo

3 个答案:

答案 0 :(得分:4)

你应该有:

var app = angular.module('myApp', appModules);

var app = angular.module('myApp', ['myApp.controllers']);

第二个参数应该是strings(或包含array的{​​{1}}个变量)的数组,当你执行{strings时,它会传递一个array[appModules] {1}} appModules本身就是array

编辑:更新了plunkr:http://plnkr.co/edit/hQOzV9oPCsEwqU2dUW4c?p=preview

更新: 对于第二个问题: 你是两次定义模块。

angular.module('myApp.controllers', [])
.controller('subController', ['$scope', function($scope){
  $scope.son = "Adil";
}]);

应该是

angular.module('myApp.controllers')
.controller('subController', ['$scope', function($scope){
  $scope.son = "Adil";
}]);

请参阅更新的plunkr http://plnkr.co/edit/xcWdAJuoN3zYKm29nIgY?p=preview

答案 1 :(得分:0)

这样可行。您需要在myapp中注入模块名称而不是var appModules

var appModules = angular.module('myApp.controllers', []);


var app = angular.module('myApp', [ 'myApp.controllers' ]);

angular.module('myApp.controllers').controller('mainController', ['$scope', function($scope){

 $scope.name = "World";

 }])

答案 2 :(得分:0)

您的固定Plunker

第一个错误(然后你改变了Plunker):

更改

var app = angular.module('myApp', [appModules]);

var app = angular.module('myApp', appModules);

第二个错误:

这是一个二传手:angular.module('myApp.controllers', [])

这是一个吸气剂:angular.module('myApp.controllers'

你曾两次使用过setter。

关于这个问题的一个小评论。要么我不明白你对myApp.controllers' myApp.controllers'或者你没有得到棱角分明的概念。 你在modules变量中持有的实际上是模块,而不是控制器。 因此,如果您想将控制器保存在阵列中(无论出于何种原因 - 我不建议这样做),您可以这样做: Plunker