2013-06-21 24 views
45

sau một số ví dụ, có vẻ như chúng ta có thể tiêm một nhà máy mà sẽ chứa một thiết bị đầu cuối cho một dịch vụ còn lại như vậyAngularJS: Tạo nhiều nhà máy cho mọi điểm cuối?

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

này sẽ rất tốt, nhưng hãy tưởng tượng tôi có điểm cuối khác tức/người dùng /: id, và/groups /: id, như bạn có thể tưởng tượng số lượng các điểm cuối khác nhau sẽ tăng lên.

Vì vậy, nó là thực hành tốt để có một nhà máy khác nhau cho mỗi thiết bị đầu cuối để có ..

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

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

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

Hoặc là có một cách khác để đề nghị?

Tôi thực sự không thấy vấn đề gì với nó nhưng nó sẽ buộc tôi phải tạo ra nhiều nhà máy chỉ để xử lý các điểm cuối khác nhau.

Bất kỳ sự giúp đỡ hoặc hướng dẫn thực sự apprecaited

Cảm ơn

+0

có thể trùng lặp của [Angularjs: một Dịch vụ phục vụ nhiều nguồn tài nguyên/nguồn dữ liệu $?] (Http://stackoverflow.com/questions/17160771/angularjs-a-service-that-serves-multiple-resource-urls-data -source) – mpromonet

Trả lời

100

Đó là một vấn đề sở thích.

Nhưng không có gì ngăn cản bạn từ việc củng cố tất cả tài nguyên của mình bên trong một nhà máy như trong:

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

Ah! điều đó có ý nghĩa gì, phương pháp này có được ưu tiên hơn phương pháp khác không? Tôi sẽ không muốn phá vỡ nguyên tắc trách nhiệm, nhưng tôi nghĩ đây là trách nhiệm tương tự? – Martin

+0

Có, tôi thích phương pháp này, bởi vì có, tất cả các tài nguyên $ mang cùng trách nhiệm (trừ điểm cuối thực tế mà chúng trỏ đến). Nếu bạn đang sử dụng $ http để tạo [mô hình tùy chỉnh nhiều hơn] (http://stackoverflow.com/a/11850027/1095616), hơn các nhà máy riêng biệt sẽ là một lựa chọn tốt hơn. – Stewie

+0

Bằng cách này, bạn chỉ nhận được ví dụ API vì các nhà máy là những người độc thân. Tôi đào nó ngay bây giờ, nhưng API của tôi vẫn chưa lớn. –

1

Nếu bạn có tất cả các nguồn lực của mình trong một nhà máy duy nhất, làm thế nào để bạn nhanh chóng lớp?

Thông thường, với một nguồn duy nhất, bạn sẽ: $scope.api = new Api();

rằng dường như không làm việc ... treo ... Ngoài ra, những gì tôi thực sự muốn là: $scope.users = new Api.Users(); ...

+0

Tại sao điều này lại được bình chọn? Đó là một bình luận tốt nhất (có lẽ tốt hơn như một câu hỏi riêng), nhưng không phải là câu trả lời – Mawg

Các vấn đề liên quan