Javascript 为什么ngModel在AngularJS中作为$resource发送时没有正确更新我的变量?
下面是我如何定义$resource的:Javascript 为什么ngModel在AngularJS中作为$resource发送时没有正确更新我的变量?,javascript,rest,angularjs,Javascript,Rest,Angularjs,下面是我如何定义$resource的: app.factory('User', function($resource){ return $resource('/api/user', {}, { get: { method:'GET'}, update: { method:'PUT'}, }) }) 这是我的控制器: function SettingsCtrl($scope, $http, User) { $scope.user = Use
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
创建了一些输入,看起来双向数据绑定工作正常。当我在$scope.saveUser
函数中调用console.log($scope.user)
时,它返回的用户对象与我在浏览器中所做的更改完全一样。但是,在我的节点后端,我记录了在PUT请求中接收到的对象,并且它不反映我在浏览器中所做的任何更改,它看起来与原始对象相同。单击浏览器中的按钮后,数据将重置为其原始值。发生了什么事?为什么它不发送我在浏览器中键入的更新数据?根据您的评论:
编辑表单并点击Save(调用saveUser
)后,这里是浏览器中的console.log($scope.user)
:
下面是节点作为console.log(req.user)
记录的内容:
req.user
通常是附加到请求对象的对象,用于指定当前登录的用户是谁,并且通常由中间件管理。由于您正在执行一个PUT
请求,因此您正在req.body
中查找数据。您可以发布Node.js控制台关于调用saveUser
时收到的PUT
的输出吗?我有一些想法,但我不确定该往哪个方向走。:)当然这是我编辑表单并点击Save(调用saveUser
)后浏览器中的console.log($scope.user)
):[14:28:56.097]({uuuuu v:0,u-id:“50b1a966c12efuc42600007”,密码:“新修改的密码”})
,下面是节点记录为console.log(req.user)
:{“50b1a966c12ef0c426000007”,密码:“originalPassword”})
我的意思是,这不会给你比问题中更多的信息。你想要包含所有标题和垃圾的完整PUT请求吗?它真的很长。我注意到你正在记录req.user
;这抛出了一个黄色标志,我想确保这是正确的对象。它似乎应该是req.body.user
——in我的应用程序,req.user
通常是通过中间件连接到req
对象的东西,用来说明“当前用户”是什么。谢谢你,先生!你说得对,req.user
是中间件会话的东西。req.body
最终成为了我所寻找的东西。我正在努力。
{__v:0, _id:"50b1a966c12ef0c426000007", password:"NEW MODIFIED PASSWORD"}
{__v:0, _id:"50b1a966c12ef0c426000007", password:"originalPassword"})