Javascript AngularJS:更新资源的正确方法是什么
我想知道更新资源的最佳方法是什么 我所说的“最佳”是指最常见的可实现、可测试和最关注AngularJS标准的标准。根据你的经验,你更喜欢什么 以下是我正在思考的一些案例 方法1:简单的方法Javascript AngularJS:更新资源的正确方法是什么,javascript,angularjs,ngresource,Javascript,Angularjs,Ngresource,我想知道更新资源的最佳方法是什么 我所说的“最佳”是指最常见的可实现、可测试和最关注AngularJS标准的标准。根据你的经验,你更喜欢什么 以下是我正在思考的一些案例 方法1:简单的方法 优点:非常容易写 缺点:如果它有很多属性,并且只修改了一个,那么所有属性都会被重新发送 方法2:复制 优点:保护$scope.uservar(如果它在视图中的其他位置使用或用作依赖项注入);如果需要,还可以将$scope.userCopy还原为$scope.user 缺点:变量重复和$scope。用户不
- 优点:非常容易写
- 缺点:如果它有很多属性,并且只修改了一个,那么所有属性都会被重新发送
- 优点:保护
var(如果它在视图中的其他位置使用或用作依赖项注入);如果需要,还可以将$scope.user
还原为$scope.userCopy
$scope.user
- 缺点:变量重复和
不会反映更改$scope。用户
- 优点:您确切地知道更新的内容
- 缺点:can意味着大量代码和检查,变量重复,
不会反映更改$scope
var diff = function(newVal, oldVal){
return _.omit(newVal , function(value, key){
return angular.equals(oldVal[key] , value);
});
}
在加载表单之前,我有一份当前模型的副本:
var oldVal = angular.copy($scope.user);
那么实际的更新将如下所示:
$scope.doUpdate = function(){
var userPartial = diff($scope.user , oldVal);
User.update({id: $scope.user._id} , userPartial);
}
如果用户点击“取消”按钮,或者更新过程中出现问题,您始终可以恢复到旧值。不同情况下的不同方法…没有“一刀切”的方法。
var diff = function(newVal, oldVal){
return _.omit(newVal , function(value, key){
return angular.equals(oldVal[key] , value);
});
}
var oldVal = angular.copy($scope.user);
$scope.doUpdate = function(){
var userPartial = diff($scope.user , oldVal);
User.update({id: $scope.user._id} , userPartial);
}