7

是否可以指定自定义 $resource 操作的路径?

我想写一些类似的东西:

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

所以我可以像这样使用它:

User.names() # GET /users/names
4

4 回答 4

8

当前版本的 AngularJS 不直接支持它,但有一个拉取请求打开,因此有可能在不久的将来支持它。

到那时你有3个选择:

1)在路径中使用变量:

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

2) 改用$ http 服务

3) 在 AngularJS 的猴子补丁版本上尝试上述 PR 中的代码

于 2013-02-25T21:44:54.687 回答
6

检查此工作 Plunker中的日志(摘录):

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();
    }  
  );
于 2013-02-25T21:50:45.310 回答
5

一个不太雄辩但同样有效的方法:

var resourceUrl =  '/users';
return $resource(resourceUrl, {}, {
    names: { path: resourceUrl + '/names', method: 'GET', isArray: true }
})
于 2013-09-09T20:25:22.150 回答
5

从 Angular 文档:https ://docs.angularjs.org/api/ngResource/service/ $resource 您可以为您的自定义操作指定“url”,这将覆盖前一个操作。

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

它在我的项目中使用 angular 1.3.10 !

于 2015-02-10T15:28:16.017 回答