Javascript 仅在$save上过帐$resource的更改字段
在ngResource上调用$save时,是否可以只发布编辑的字段,而不是每次发布整个模型Javascript 仅在$save上过帐$resource的更改字段,javascript,angularjs,Javascript,Angularjs,在ngResource上调用$save时,是否可以只发布编辑的字段,而不是每次发布整个模型 var User = $resource('http://example.com/user/123/'); User.get(function(user) { user.name="John Smith"; user.$save(); // What I *want* -> POST: /user/123/ {name:'John Smith'} // What currently
var User = $resource('http://example.com/user/123/');
User.get(function(user) {
user.name="John Smith";
user.$save();
// What I *want* -> POST: /user/123/ {name:'John Smith'}
// What currently happens -> POST: /user/123/ {name:'John Smith', age: 72, location: 'New York', noOfChildren: 5}
});
不,这不可能,至少在实例上不可能,请参见 […]类对象或实例对象上的操作方法可以通过以下方式调用 参数:
- HTTP获取“类”操作:
Resource.action([parameters]、[success]、[error])
- 非获取“类”操作:
Resource.action([parameters]、postData、[success]、[error])
- 非获取实例操作:
instance.$action([parameters]、[success]、[error])
User.save
,才有可能。大概是这样的:
User.get(function(user)
{
user.name = 'John Smith';
User.save({name: user.name});
});
这是否适用于您可能取决于您将如何处理
用户
实例。当我只想保存一个字段时,我使用静态的.save()
方法,并使用一个回调函数,从中获取响应,成功后更新本地对象:
$scope.saveOneField = function(modelInstance) {
ModelName.save({
id: modelInstance.id,
theField: <some value>
}, function(response) {
// If you want to update *all* the latest fields:
angular.copy(response, modelInstance.data);
// If you want to update just the one:
modelInstance.theField = response.data.theField;
});
};
$scope.saveOneField=函数(modelInstance){
ModelName.save({
id:modelInstance.id,
现场:
},功能(回应){
//如果要更新*所有*最新字段:
复制(响应,modelInstance.data);
//如果您只想更新一个:
modelInstance.theField=response.data.theField;
});
};
这假设当POST请求发送到资源(即,
/modelnames/:id
)时,您的服务器会以最新更新版本的ModelInstance进行响应。这是否成功?我正在努力解决类似的问题:一个$resource,它返回大量数据,但我只想一次更新一点点数据。