我正在尝试将指令分离到另一个文件,而不必声明新模块 - 不执行:
angular.module('myapp.newmodule',[]).directive
但只是:
angular.module('myapp.directives')。指令(''
myapp.directives模块存在于另一个文件中并且工作正常。但是当我尝试在另一个文件中使用它时,如上所示(没有[]
)它就失败了。
关注this answer它认为我的方法应该有效,但由于某种原因它失败了..
答案 0 :(得分:21)
当您第一次声明模块时,它需要具有依赖项参数。之后,您可以仅使用模块名称参数引用同一模块。
/* create module */
angular.module('myapp.newmodule',['ngRoute','ngResource']);
/* declare components of same module, note same name*/
angular.module('myapp.newmodule').directive....
如果要创建新模块,则需要将它们作为依赖项注入主ng-app
模块。
/* main ng-app module , injects another module you created below*/
angular.module('myapp.newmodule',['ngRoute','ngResource','myUploader']);
/* new module, must have dependency argument */
angular.module('myUploader',[]).directive...
答案 1 :(得分:13)
无论何处它只是引用模块名称(即使在不同的文件中)并附加指令。 Javascript只会查看附加到模块的内容,而不会看到它来自哪个文件。
<强> file1.js 强>
angular.module('module-name')
.directive('directive1', function () {
return {
....
};
});
<强> file2.js 强>
angular.module('module-name')
.directive('directive2', function () {
return {
....
};
});
唯一不要忘记在视图html文件中包含两个js文件。 说 的index.html
<script src="file1.js"></script>
<script src="file2.js"></script>
答案 2 :(得分:5)
您不需要将它们链接在一起,您发布的链接在问题的底部有答案。
在第一个文件中,您需要创建应用模块:
var myApp = angular.module('myApp ', []);
然后在每个文件中,您可以将其他内容附加到myApp
:
myApp.directive('ngValidate', ['$parse', function ($parse) {
....
}]);
就我个人而言,我从不把这些东西连在一起,而是把它放在单独的文件中。