javascript - 获取sessionStorage并恢复值

标签 javascript angularjs local-storage session-storage

我有一个具有不同 View 的 Angular 应用程序。在第一个 View 上我创建一个变量,在第二个 View 上我必须编辑它。 我用这个“sessionStorage”。在第一个 View 中,当我转到另一个页面时,我在 $sessionStorage 上记录变量列表。

当我开始第二次查看时,我得到了这些数据。在此 View 中,我希望能够编辑值或不编辑值。当我单击有效按钮时,我记录新值,当我按取消按钮时,我获得初始值。

这是第二个 View 的js文件。

angular.module('testNgStorageApp')
  .controller('MainCtrl', function ($scope, $sessionStorage) {
    var listNameRecorded = $sessionStorage.namesRecord;
    $scope.listNameTemp = listNameRecorded || [];

    $scope.edit = function(index){
        console.log("before", $scope.listNameTemp, listNameRecorded, $sessionStorage.namesRecord)
        $scope.listNameTemp[index] = $scope.newText;
        console.log("after", $scope.listNameTemp, listNameRecorded, $sessionStorage.namesRecord)
    }
...
});

html

<div ng-repeat="name in listNameTemp">
    <span>{{name}}</span>
    <input ng-model="newText"/>
    <button ng-click="edit($index)">Edit</button>
  </div>

我的问题是当我编辑值($scope.listNameTemp)时,$sessionStorage.namesRecords 会自动修改。

最佳答案

$sessionStorage.namesRecords 被修改的原因是 $sessionStorage.namesRecords 的引用被分配给 $scope.listNameTemp .

您可以使用angular.copy()来解决这个问题。 angular.copy() 创建并返回传递给它的对象的全新副本。

更新的代码:

angular.module('testNgStorageApp')
  .controller('MainCtrl', function ($scope, $sessionStorage) {
    var listNameRecorded = angular.copy($sessionStorage.namesRecord);
    $scope.listNameTemp = listNameRecorded || [];

    $scope.edit = function(index){
        console.log("before", $scope.listNameTemp, listNameRecorded, $sessionStorage.namesRecord)
        $scope.listNameTemp[index] = $scope.newText;
        console.log("after", $scope.listNameTemp, listNameRecorded, $sessionStorage.namesRecord)
    }
...
});

关于javascript - 获取sessionStorage并恢复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33786791/

相关文章:

javascript - 如何通过 javascript 从 silverlight 媒体播放器 (player.xap) 获取播放状态?

javascript - Angular Directive(指令)向所有字段显示消息,而不是向特定字段显示消息?

css - 单击时自定义复选框更改位置

java - android arraylist应用程序白屏

php - 在 PHP 表单中创建具有自动完成功能的输入字段

javascript - Protractor> TypeError : item. 元素不是函数

javascript - 如何检索页面上可见 div 的数量并显示计数

javascript - 如何在不刷新angularjs应用程序页面的情况下刷新 View

javascript - rendr Controller 中未定义 localStorage

jquery - Localstorage & JSON.parse : If no value, JS 停止工作?