javascript - 从 via 更改数据似乎正在修改 localStorage 对象

标签 javascript angularjs html model-view-controller

我有一个用户设置页面,它从本地存储 $localStorage.user 加载用户,将其存储在 self.user 范围内的变量中,并允许用户通过 View 上的表单修改数据。一旦用户对更改感到满意,$localStorage.user 就会再次被 self.user 替换,瞧。如果用户离开页面,$localStorage.user 应保持不变。然而,出于某种原因,更改 View 上的 self.user 变量似乎也在更改 $localStorage.user ,我无法理解为什么。

示例 View :

<label class="item item-input">
      <input type="text" class="ec" name="firstName" placeholder="First Name"  ng-bind="{{setCtrl.user.firstName}}" ng-model="setCtrl.user.firstName" required>
</label>

示例 Controller :

self.user = $localStorage.user; // when page loads run this

$localStorage.user = self.user; // runs when user saves

最佳答案

本质上,在 Javascript 中对象是作为其引用的副本传递的。这意味着调用后

self.user = $localStorage.user;

,对 self.user 的任何更改也意味着更改 $localStorage.user,因为它们指向相同的内存地址。您需要复制存储用户,例如使用 Angular 的内置复制功能:

angular.copy($localStorage.user, self.user);

关于javascript - 从 via 更改数据似乎正在修改 localStorage 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41966283/

相关文章:

php - 如何将php变量值传递给javascript?

javascript - Yii - js 函数不工作

angularjs - Ui-sref 未在 ionic 框架中生成正确的 url

javascript - mgcrea.ngStrap.select onSelect 回调不起作用

javascript - 在 AngularJS 中使用子对象发送 JSON 数据

html - 沿中间对齐两个不同大小的div

html - 文本太靠近 html 电子邮件中的边缘

javascript - 带有 html 内容的 jquery ui 工具提示

html - 位置为 : relative 的 CSS z-Index

javascript - 从多组复选框中向数组添加和删除复选框值