$ resource PUT操作不提取id

时间:2017-08-03 14:40:33

标签: angularjs angular-resource

我似乎无法得到一个" id"从控制器进入$resource功能。这是有问题的代码......

控制器:

$scope.update_user_extra = function () {
    UserExtraResource.update($scope.user_extra_details, function (data) {
        $scope.user_extra_details = data;
        $scope.user_extra_details = {mobile:data.mobile,
                                     landline:data.landline,
                                     position:data.position, 
                                     notes:data.notes, 
                                     language:data.language};
    });
};

资源:

module.exports = function ($resource) {
    return $resource('/api/user_extra/:id/', { id: '@_id' }, {      
        details: {method: 'GET', url: '/api/user_extra/details'},
        update: {method: 'PUT'}
    });
};  

GET工作正常,但自定义PUT返回:

  

http://127.0.0.1:8000/api/user_extra/ 404(未找到)

将id硬编码为:

return $resource('/api/user_extra/1/', { id: '@_id' }, {  

工作正常。任何帮助深表感谢!!

1 个答案:

答案 0 :(得分:0)

  

嗯......将此行改为:

return $resource('/api/user_extra/:id/', { id: ̶'̶@̶_̶i̶d̶'̶ '@id' }, {
     

似乎已经做到了。非常感谢你!

如果默认参数值以@为前缀,则该参数的值将从数据对象上的相应属性中提取。例如,如果defaultParam对象为{someParam: '@someProp'},那么someParam的值将为data.someProp

在上面的问题中,当属性名称实际为_id时,PUT操作试图提取数据对象的属性id

有关详细信息,请参阅AngularJS $resource API Reference