0

下面是我如何定义我的 $resource:

app.factory('User', function($resource){
    return $resource('/api/user', {}, {
        get: { method:'GET'},
        update: { method:'PUT'},
    })
})

这是我的控制器:

function SettingsCtrl($scope, $http, User) {
    $scope.user = User.get(
        {}, //Params

        function(data) { //Successfully received data

        },
        function(data) { //Failure to receive data

        }
    );

    $scope.saveUser = function() {
        $scope.user.$update();
        console.log($scope.user);
    };
}

User.get()控制器顶部的调用正确地从后端获取数据。在我的 HTML 中,我创建了一个调用该$scope.saveUser函数的按钮,并使用 创建了一些输入ng-model,看起来双向数据绑定工作正常。当我调用console.log($scope.user)$scope.saveUser函数时,它完全按照我的预期返回用户对象,其中包含我在浏览器中所做的更改。但是,在我的 Node 后端,我记录了在 PUT 请求中收到的对象,它没有反映我在浏览器中所做的任何更改,它看起来与原始对象相同。单击浏览器中的按钮后,数据将重置为其原始值。到底是怎么回事?为什么它不会发送我在浏览器中输入的更新数据?

4

1 回答 1

2

根据您的评论:

这是console.log($scope.user)我编辑表单并点击保存(调用saveUser)后的浏览器:

{__v:0, _id:"50b1a966c12ef0c426000007", password:"NEW MODIFIED PASSWORD"}

这是 Node 记录的内容console.log(req.user)

{__v:0, _id:"50b1a966c12ef0c426000007", password:"originalPassword"})

req.user通常是附加到请求对象的对象,用于指定当前登录的用户是谁,通常由中间件管理。由于您正在执行PUT请求,因此您正在寻找req.body.

于 2012-11-25T20:23:14.607 回答