我需要一組資源工廠來使用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