ngResource像GET一样处理POST

时间:2015-01-09 02:11:42

标签: angularjs post save factory ngresource

我注意到虽然我在ngResource工厂中指定了“post”,但它将参数传递为GET。

用户工厂示例:

myApp.factory('facUser',['$resource', function ($resource) {
    return $resource('/api/User/:route', {}, {
        EditUser: { method: 'POST', isArray: true, params: { route: "EditUser", cid: '@cid', objEditUser: '@objEditUser' } }
    })
}]);

这是编辑用户的调用:

$scope.Edited_User = facUser.EditUser({
        cid: $stateParams.company_id, objEditUser: TempUserInfo
    }, function success(data, status, headers) {
        console.log(data);
    }, function err(data, status, headers, config) {
});

因此,当我调用它时,出于某种原因,我看到我的所有值都在API的标题上传递,就像它是GET一样。

我无法弄清楚如何使用$ save()或如何将其作为表单发布/放置。

2 个答案:

答案 0 :(得分:1)

params关键字将解析任何路由变量,其余的将在请求查询中。

要在请求正文中发送值,您可以执行以下操作:

var user = new User( {
        cid: $stateParams.company_id,
        objEditUser: TempUserInfo
    }) ;
user.$EditUser();

将您的资源更改为:

    $resource('/api/User/:route', {}, {
        EditUser: { method: 'POST', isArray: true, params: { route: "EditUser" } }
    })
}]);

答案 1 :(得分:0)

myApp.factory('facUser',['$resource', function ($resource) {
    return $resource('/api/User/:route', {}, {
        EditUser: { method: 'POST', isArray: true, params: { route: '@route'} }
    })
}]);

然后......

$scope.Edited_User = facUser.EditUser({
    route: "EditUser"
}, {cid: $stateParams.company_id, objEditUser: TempUserInfo}, function success(data, status, headers) {
   console.log(data);
}, function err(data, status, headers, config) {

});

基本上第一部分是参数。

第二部分是发布值。