您能告诉我为什么建议将依赖模块添加到模块的创建中吗?
我尝试在不添加模块 TodoApp.controllers 和 TodoApp.services 的情况下运行代码。即使我删除它们,一切都完美运行..(我通过这两个文件调用服务)
// 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: '/' });
});
感谢您的回复! :)
不幸的是,这些文件并不共享一个公共变量:
这实际上是我没理解这套问题的原因。对我来说,这段代码无处存储。可能是因为命名中的点符号?
angular.module('TodoApp.controllers', []).
controller('listCtrl', function ($scope, $location, todoApiService) {
$scope.todos = todoApiService.getMyTodos().query();
});
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;
});
答案 0 :(得分:2)
您无需注入控制器和放大器服务,因为他们必须成为module
的一部分。
你 可以在其他文件中将它们标记为:
TodoApp.controllers(/* ... */)
TodoApp.services(/* ... */)
由于TodoApp
变量(反过来是angular.module('TodoApp')
),他们已经将自己附加到模块。
看起来你每次都直接调用模块:
angular.module('TodoApp.controllers', []).
controller('listCtrl', /* etc etc */ );
每种方式,您只需在整个模块中添加更多内容(以典型的圆点表示法),并且角色理解它TodoApp
,因为您正在使用它。
但有时您会看到人们以继承模块controllers / directives / services / etc的方式注入其他模块。
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!
希望有所帮助!