如果我在同一个文件中有指令和控制器:
var app = angular.module('app.navigation', []);
app.controller('NavItemCtrl', [ ....])
app.directive('navItem', [
'ribbon', '$window', function (ribbon, $window) {
return {
require: ['^navigation', '^?navGroup'],
restrict: 'AE',
controller: 'NavItemCtrl',
...
}])
一切都很好,但如果我将控制器代码移动到另一个文件,因为当前文件变得过于混乱,使用相同的模块,并在我的索引页面中引用新的控制器文件,该指令会尖叫
p0=NavItemCtrl&p1=not aNaNunction got undefined
我的索引页面是这样的:
<html>
<body>
....
<script app.js ...>
<script new controller file path .... >
<script original directive file path .... >
....
</body>
</html>
我在这里缺少什么?
[解决方案] Delta正确,我想通了:
为了保持良好的住房,我认为有一个JS文件(在主app.js中作为依赖项列出)可能是明智的,它会实例化您将使用的所有模块,假设您的项目变大,然后重复使用实例化没有任何依赖关系。
例如:
(1)主要应用程序:
angular.module('MainApp', ['ngRoute', 'ngAnimate', 'app.SubApp1', 'app.SubApp2', 'app.SubApp3' ...]
(2)然后作为存储库,如果你愿意,创建一个新的js文件,比如repositoryApp.js,实例化这些子应用程序,确保在使用这些子应用程序模块的所有其他文件之前引用该文件:
angular.module('app.SubApp1', [xxx]);
angular.module('app.SubApp2', [xxx]);
angular.module('app.SubApp3', [xxx]);
(3)然后,在创建一系列指令,控制器或与特定子应用程序有关的任何内容时,只需将相应文件中的子应用程序引用为:
angular.module('app.SubApp1').controller('foo') .....
angular.module('app.SubApp1').directive('bar') .....
没有依赖括号,因为这就是我的错误。
答案 0 :(得分:2)
你得到的是这样的应用程序
var app = angular.module('app.navigation');
如果你把括号放在它后面就像你的第一个例子一样,你将只是替换你现有的而不是得到它。
这是一个新模块
var app = angular.module('app.navigation', []);
这会获得现有模块。
var app = angular.module('app.navigation');
请注意在第二个示例中排除了括号。