Angular $resource: 使用自定义方法 POST 丢失的对象 ID
Angular $resource: object id lost using POST with custom methods
我想通过 POST 调用在我的 Foo Factory 中使用自定义方法。当我将其作为 GET 请求调用时,它可以工作,但它被我的 api 拒绝,因为它不允许 GET 该方法。
Request: GET /api/foo/272ee694-b517-4012-b740-98f76973091d/custom_method/ 405
当我将方法更改为 POST(在 angular 工厂中)时,对象 ID 消失了:
Request: OPTIONS /api/foo/custom_method/ 174
Request: POST /api/foo/custom_method/ 405
注意,这次是在没有id的情况下进行OPTION请求
我的工厂是这样的:
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});
}
有人可以帮助我吗?提前谢谢你
所以,我找到了解决方案。在控制器中,只需从带有 $
的对象中调用 custom_method
。像这样:
$scope.foo.$custom_method();
您也可以省略传递 id,因为 $resource 默认从对象中获取它。
我想通过 POST 调用在我的 Foo Factory 中使用自定义方法。当我将其作为 GET 请求调用时,它可以工作,但它被我的 api 拒绝,因为它不允许 GET 该方法。
Request: GET /api/foo/272ee694-b517-4012-b740-98f76973091d/custom_method/ 405
当我将方法更改为 POST(在 angular 工厂中)时,对象 ID 消失了:
Request: OPTIONS /api/foo/custom_method/ 174
Request: POST /api/foo/custom_method/ 405
注意,这次是在没有id的情况下进行OPTION请求
我的工厂是这样的:
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});
}
有人可以帮助我吗?提前谢谢你
所以,我找到了解决方案。在控制器中,只需从带有 $
的对象中调用 custom_method
。像这样:
$scope.foo.$custom_method();
您也可以省略传递 id,因为 $resource 默认从对象中获取它。