难以向其他服务注入服务。为了简洁和封装,我想要一个服务层次结构,我可以向/从父服务传递/请求逻辑。模块内的角度服务
因此,例如,我有一个userService,并且我想让userService管理用户的toDoList。所以我创建了一个toDoService,并且我希望控制器通过将请求传递给userService来继承toDoService,从而为用户添加一个toDo。下面是我有:
// app.js
angular.module('myApp', [
// other dependencies...
'myApp.myServices'
]);
// services/toDoService.js
angular.module('myApp.myServices', [])
.factory('toDoService', function($http) {
getStuff = function(userId) {
// returns $http call
};
addStuff = function(userId, data) {
// returns $http call
};
});
// services/userService.js
angular.module('myApp.myServices', [])
.factory('userService',
['$http', 'toDoService', function(
$http, toDoService) {
addToDo = function(data) {
toDoService.addStuff(user.uid, data)
.then(function(success) {
// apply bindings
})
.catch(function(error) {
// display error
});
};
getToDos = function(data) {
toDoService.getStuff(user.uid)
.then(function(success) {
// apply bindings
})
.catch(function(error) {
// display error
});
};
}]);
控制器的工作原理用户与UserService,并从toDoService代码工作时,它最初是在userService。但是,当我创建toDoService并将代码移动并封装它时,角度抱怨toDoService。
错误:[$注射器:unpr]未知提供商:toDoServiceProvider < - toDoService < - userService
我检查脚本引用,并且所有的脚本都正确包括在内。例如<script src='/[..]/toDoService.js' />
等...
所以我想知道是否有可能将服务注入同一模块内的其他服务?我的命名约定是否是一个问题?
好的,我将创建一个单独的文件'/ services/myService.js',并且我需要引用服务在声明中引入模块吗?例如'angular.module('myApp.myServices',['userService','toDoService'])'? – kmunky
不可以。您只需使用'angular.module('myApp.myServices',[])''定义它。数组中的内容不属于该模块的服务。这是myApp.services依赖的其他模块名称。不要将服务与模块混淆。 –