我需要一组资源工厂来使用rest API,并在我所有的模块和控制器中使用它。我很困惑这应该如何分开以及如何从控制器访问工厂。AngularJS在模块和控制器之间共享REST服务
举个例子,假设我有:
// rest.js
angular.module('myApp.rest', ['ngResource'])
.factory('Book', function ($resource) {
return $resource('api/book', {}, {
getBook: {
method: 'GET'
},
});
})
这里的主要模块myApp
:
// app.js
angular.module('myApp', [
'ngRoute',
'ngResource',
'app.rest',
'app.library'
])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider.
when('/book', {
templateUrl: 'someTemplate',
controller: 'LibraryCTRL',
});
现在我想有一个名为app.library
另一个模块,它可以使用Book
资源。依赖注入的外观如何?
更重要的问题:这是正确的做法吗?我的意思是将整个Book
工厂连接到myApp
或使用单独的myApp.rest
模块更好吗?
// library.js
angular
.module('myApp.library', ['ngResource']) // INJECT REST MODULE HERE?
.controller('LibraryCtrl', Library);
// INJECT BOOK RESOURCE HERE?
Library.$inject = [];
// USE BOOK IN THIS CONSTRUCTOR
function Library() {
var vm = this;
// USING IT
Book.getBook(function(data){
vm.book = data;
});
}
谢谢。在这里,您将创建'restControllerService'作为主模块'ServiceApp'的一部分。如果我在另一个叫'ServiceApp.rest'的模块中有'restControllerService',那么注入将如何改变? – norbertpy 2015-02-10 19:18:10
抱歉,您的意思是“如果我在另一个模块中有restControllerService”,那么您的意思是调用该服务或定义一个具有相同名称的新服务 – 2015-02-10 19:21:08
您有一个名为'ServiceApp'的模块并在该模块上定义了'restControllerService' 。但我有两个单独的模块。一个人没有服务。 – norbertpy 2015-02-10 19:27:07