这是我定义 $resource 的方式:
app.factory('User', function($resource){
return $resource('/api/user', {}, {
get: { method:'GET'},
update: { method:'PUT'},
})
})
这是我的 Controller :
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);
};
}
Controller 顶部的User.get()
调用正确地从后端获取数据。在我的 HTML 中,我制作了一个调用 $scope.saveUser
函数的按钮,并使用 ng-model
创建了一些输入,并且看起来双向数据绑定(bind)工作正常。当我在 $scope.saveUser
函数中调用 console.log($scope.user)
时,它完全按照我的预期返回用户对象,并包含我在我的浏览器。但是,在我的 Node 后端,我记录了在 PUT 请求中收到的对象,并且它没有反射(reflect)我在浏览器中所做的任何更改,它看起来与原始版本相同。单击浏览器中的按钮后,数据将重置为其原始值。到底是怎么回事?为什么它不发送我在浏览器中输入的更新数据?
最佳答案
根据您的评论:
Here is
console.log($scope.user)
from the browser after I edited the form and hit Save (which callssaveUser
):{__v:0, _id:"50b1a966c12ef0c426000007", password:"NEW MODIFIED PASSWORD"}
And here's what Node logs as
console.log(req.user)
:{__v:0, _id:"50b1a966c12ef0c426000007", password:"originalPassword"})
req.user
通常是附加在请求对象上的一个对象,用于指定当前登录的用户是谁,通常由中间件管理。由于您正在执行 PUT
请求,因此您正在 req.body
中查找数据。
关于javascript - 当我的变量作为 AngularJS 中的 $resource 发送时,为什么 ngModel 没有正确更新我的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13552789/