2013-06-21 47 views
45

以下的一些例子中,我們似乎可以注入一個工廠,將包含一個端點休息服務,像這樣AngularJS:爲每個端點創建多個工廠?

services.factory('Recipe', ['$resource', 
    function($resource) { 
     return $resource('/recipes/:id', {id: '@id'}); 
}]); 

這看起來不錯,但可以想象我有其他終端即/用戶/:id和/ groups /:id,你可以想象不同端點的數量會增加。

所以這是很好的做法,有不同的工廠所以有每個端點..

services.factory('Recipe', ['$resource',............ 

services.factory('Users', ['$resource',............. 

services.factory('Groups', ['$resource',............... 

或者有另一種推薦的方式?

我真的沒有看到它的問題,但它會迫使我創建很多工廠只是爲了處理不同的端點。

任何幫助或指導真的apprecaited

感謝

+0

[Angularjs:爲多個$資源網址/數據源提供服務的服務的可能的重複?](http://stackoverflow.com/questions/17160771/angularjs-a-service-that-serves-multiple-resource-urls-data -sources) – mpromonet

回答

100

它喜好的問題。

但沒有什麼能阻止你從鞏固一個工廠內所有的資源,如:

services.factory('Api', ['$resource', 
function($resource) { 
    return { 
    Recipe: $resource('/recipes/:id', {id: '@id'}), 
    Users: $resource('/users/:id', {id: '@id'}), 
    Group: $resource('/groups/:id', {id: '@id'}) 
    }; 
}]); 

function myCtrl($scope, Api){ 
    $scope.recipe = Api.Recipe.get({id: 1}); 
    $scope.users = Api.Users.query(); 
    ... 
} 
+2

啊!這是有道理的,這種方法會比另一種更受歡迎嗎?我不想打破一個責任原則,但我認爲這些責任是一樣的? – Martin

+0

是的,我更喜歡這種方法,因爲是的,所有$資源都承擔相同的責任(減去他們指向的實際端點)。如果您使用$ http來創建[更多定製模型](http://stackoverflow.com/a/11850027/1095616),那麼單獨的工廠將是更好的選擇。 – Stewie

+0

這樣你也只能得到API實例,因爲工廠是單身人士。我現在正在挖掘它,但我的API還不是很大。 –

1

如果你有一個工廠所有的資源,你怎麼實例化的類?

通常情況下,用一個單一的資源,你會: $scope.api = new Api();

似乎不工作... ...掛起還 ,我真正想要的是: $scope.users = new Api.Users(); ...

+0

爲什麼這是upvoted?這是一個最好的評論(可能更好地作爲一個單獨的問題),但不是一個答案 – Mawg