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

标签 javascript angularjs

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

  1. 在用户工厂类中创建一个附加属性“initUserGroup”并为每个对象存储一个值
  2. 使用本地存储(一次最多只能保存 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/

相关文章:

javascript - 如何让 for 循环之后的代码在 for 循环完成其交互之前不运行?

javascript - 聚合纸波纹

javascript - 如何在angularjs中迭代一个对象?

javascript - 填充 Angular 用户界面 Bootstrap 弹出窗口

javascript - 在 JavaScript 类中使用命名空间

javascript - 有没有办法在 React 中动态加载纯 HTML 作为单独的组件?

javascript - NVD3 线图工具提示不跟随鼠标

javascript - spring Controller 无法从 $http Angular 检索数据

javascript - 使用 AngularJS 的 Reddit oAuth

javascript - 如何正确部署 Angular 应用程序(基于ngBoilerplate并使用nginx)?