我正在使用工厂根据来自服务器的数据创建不同的用户对象。每个用户对象都有一个“userGroup”属性。在 View 中使用 ng-repeat 显示用户列表。由于 AngularJS 1 是双向绑定(bind)的,因此可以将 userGroup 值从“basic”更改为“admin”。所以Object的原始值就消失了。所以我的问题是:当我们想要取消所做的更改时,初始值 {userGroup: "basic"} 应该存储在哪里? 我正在考虑两种可能的解决方案:
- 在用户工厂类中创建一个附加属性“initUserGroup”并为每个对象存储一个值
- 使用本地存储(一次最多只能保存 20 条记录)
对于此类情况有什么最佳实践吗?
最佳答案
例如,您可以在 _backup 等属性中备份整个对象(使用 angular.copy),并在需要撤消更改时进行恢复(使用 angular.extend)。这是一个例子:
$scope.editItem(item) {
item._backup = angular.copy(item);
}
$scope.undoEdit(item) {
angular.extend(item, item._backup);
//delete unused data
delete(item._backup);
}
在这种情况下,您不需要在当前对象之外保存数据。
关于javascript - 在 AngularJS 中,在哪里存储可以更改的对象的初始对象值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40301933/