在AngularJS中,哪里可以存储可以更改的对象的初始Object值?

时间:2016-10-28 09:20:04

标签: javascript angularjs

我正在使用工厂从来自服务器的数据创建不同的用户对象。每个user-Object都有一个“userGroup”属性。在视图中使用ng-repeat显示用户列表。由于AngularJS 1双向绑定,可以将userGroup-value从“basic”更改为“admin”。所以对象的原始值消失了。所以我的问题是:当我们要取消所做的更改时,应该在哪里存储初始值{userGroup:“basic”}? 我在考虑两种可能的解决方案:

  1. 在User Factory类中创建一个附加属性“initUserGroup”,并为每个Object
  2. 存储一个值
  3. 使用localstorage(必须一次保存最多20条记录)
  4. 此类案件是否有最佳做法?

1 个答案:

答案 0 :(得分:1)

例如,您可以在_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);
}

在这种情况下,您不需要将数据保存在当前对象之外。