2013-02-25 24 views
7

Có thể chỉ định đường dẫn của hành động tài nguyên $ tùy chỉnh không?

Tôi muốn viết một cái gì đó như:

angular.module('MyServices', [ 'ngResource' ]).factory('User', [ '$resource', ($resource)-> 
    $resource('/users', {}, { 
    names: { path: '/names', method: 'GET', isArray: true } 
    }) 
]) 

Vì vậy, tôi có thể sử dụng nó như:

User.names() # GET /users/names 
+1

Câu trả lời được chấp nhận là lỗi thời; không chỉ là tính năng mà nó nói về sáp nhập, mà còn có [lựa chọn thay thế đơn giản hơn] (http://stackoverflow.com/a/20022017/1709587). –

Trả lời

8

Nó không được hỗ trợ trực tiếp trong phiên bản hiện tại của AngularJS nhưng có một pull request mở vì vậy có khả năng nó sẽ được hỗ trợ trong tương lai gần.

Till sau đó bạn đã có 3 lựa chọn:

1) Chơi với biến trong đường dẫn:

$resource('/users/:names', {}, { 
    names: { params: {names: 'names'}, method: 'GET', isArray: true } 
    }) 

2) Sử dụng các $http service thay

3) Hãy thử mã từ đã đề cập PR trên phiên bản khỉ được vá của AngularJS

+3

Bây giờ có một 'tài sản url' trong góc 1.2 - xem: http://stackoverflow.com/a/20022017/2583484 – Adam

5

Kiểm tra nhật ký trong working Plunker (trích đoạn):

var app = angular.module('plunker', ['ngResource']) 
    .controller('MyController', 
    function($scope, $resource) { 
     var User = $resource(
     '/users/:action', 
     {}, 
     { 
      names:{ 
      method:'GET', 
      params:{action:'names'} 
      } 
     } 
    ); 

     $scope.users = User.get(); 
     $scope.names = User.names(); 
    } 
); 
+0

Cảm ơn bạn. Điều này làm việc tuyệt vời cho dự án của tôi. –

5

Một phương pháp ít hùng hồn, nhưng hiệu quả không kém:

var resourceUrl = '/users'; 
return $resource(resourceUrl, {}, { 
    names: { path: resourceUrl + '/names', method: 'GET', isArray: true } 
}) 
5

Từ tài liệu góc: https://docs.angularjs.org/api/ngResource/service/ $ nguồn bạn có thể chỉ định 'url' cho tác vụ tùy chỉnh của bạn mà sẽ ghi đè lên trước đó.

angular.module('MyServices', ['ngResource']).factory('User', ['$resource', ($resource)-> $resource('/users', {}, { 
names: { url: '/users/names', method: 'GET', isArray: true } 
})]) 

Nó hoạt động trong dự án của tôi sử dụng góc 1.3.10!

+0

Điều này thật tuyệt vời. Cảm ơn! – whiterook6

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