我有一个用户设置页面,它从本地存储 $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/