你能告诉我为什么建议在创建模块时添加依赖模块吗?
我尝试在不添加模块 TodoApp.controllers 和 TodoApp.services 的情况下运行代码。即使我删除了它们,一切都运行得很好..(我通过这两个文件调用服务)
应用程序.js
// Injects all the needed modules
var TodoApp = angular.module("TodoApp", [
"ngRoute",
"ngResource",
"TodoApp.controllers",
"TodoApp.services"
]).
config(function ($routeProvider) {
$routeProvider.
when('/', { controller: "listCtrl", templateUrl: 'list.html' }).
otherwise({ redirectTo: '/' });
});
更新
感谢您的回复! :)
不幸的是,这些文件不共享一个公共(public)变量:
这实际上是我不理解问题集的原因。对我来说,这段代码无处存储。难道是因为命名中的点符号?
Controller .js
angular.module('TodoApp.controllers', []).
controller('listCtrl', function ($scope, $location, todoApiService) {
$scope.todos = todoApiService.getMyTodos().query();
});
服务.js
angular.module('TodoApp.services', []).
factory('todoApiService', function ($resource) {
var todoApi = {};
todoApi.getMyTodos = function () {
return $resource('/api/todo/:id', { id: '@id' }, { update: { method: 'PUT' } });
};
return todoApi;
});
最佳答案
您不需要注入(inject) Controller 和服务,因为无论如何它们都必须是模块
的一部分。
您可以在其他文件中像这样标记它们:
TodoApp.controllers(/* ... */)
TodoApp.services(/* ... */)
由于 TodoApp
变量(它又是 angular.module('TodoApp')
,它们已经将自己附加到模块。
看起来你每次都直接调用模块:
angular.module('TodoApp.controllers', []).
controller('listCtrl', /* etc etc */ );
无论哪种方式,您都只是向整个模块添加更多内容(以典型的点表示法),并且 Angular 理解它是 TodoApp
,因为您是从它开始的。
但有时您会看到人们以继承模块 Controller /指令/服务等的方式注入(inject)其他模块。
var HelperModule = angular.module('HelperModule', /*...*/);
HelperModule.directive('headerLinks', /*...*/);
HelperModule.factory('BaseFactory', /*...*/);
// etc etc
var TodoApp = angular.module("TodoApp", ["HelperModule"]); // <-- Module injected
// TodoApp now contains all the directives/etc from that module!
希望对您有所帮助!
关于javascript - AngularJS - 为什么需要模块依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24165595/