在我的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";
}])
答案 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