【问题标题】:Angular $resource: object id lost using POST with custom methodsAngular $resource:使用带有自定义方法的POST丢失了对象ID
【发布时间】:2016-04-14 13:30:51
【问题描述】:

我想通过 POST 调用在我的 Foo 工厂中使用自定义方法。当我将其作为 GET 请求调用时,它可以工作,但我的 api 拒绝了它,因为它不允许 GET 用于该方法。

Request: GET /api/foo/272ee694-b517-4012-b740-98f76973091d/custom_method/ 405

当我将方法更改为 POST(在角度工厂中)时,对象 ID 消失:

Request: OPTIONS /api/foo/custom_method/ 174

Request: POST /api/foo/custom_method/ 405

请注意,这一次之前发出的 OPTION 请求没有 id。

我的工厂是这样的:

appService.factory('foo', ['$resource', 'appConfig',
  function($resource, appConfig){

    var api_path = appConfig.api_path;

    return $resource(api_path + 'foos/:fooId/', {fooId:'@id'},{
      query: {
        method: 'GET',
        isArray: false
      },
      customMethod: {
        method: 'POST',
        url: api_path + 'foos/:fooId/custom_method/'
      }
    });
  }]);

还有我的控制者:

$scope.foo = foo.get({fooId: $routeParams.fooId});

$scope.customMethod = function() {
    foo.customMethod({fooId:$scope.foo.id});
}

有人可以帮助我吗?提前谢谢你

【问题讨论】:

    标签: angularjs api post request angular-resource


    【解决方案1】:

    所以,我找到了解决方案。在控制器中,只需从带有$ 的对象调用custom_method。像这样:

    $scope.foo.$custom_method();
    

    您也可以省略传递 id,因为 $resource 默认从对象中获取它。

    【讨论】:

      猜你喜欢
      • 2013-06-12
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多