gpt4 book ai didi

javascript - 刷新后如何保留localStorage值?

转载 作者:搜寻专家 更新时间:2023-10-31 22:25:02 25 4
gpt4 key购买 nike

这是我的控制键:

app.controller('ctrl', function ($window, $scope) {

$scope.initData = [
{
firstName: "John",
lastName: "Doe",
},
{
firstName: "Jane",
lastName: "Doe",
},
{
firstName: "John",
lastName: "Smith",
}
];

$window.localStorage.setItem('initData', JSON.stringify($scope.initData));
$scope.retrievedData = JSON.parse($window.localStorage.getItem('initData'));
$scope.sortedType = 'firstName';
$scope.sortedReverse = false;
//Remove Rows and Update localStorage Key Values
$scope.removeRow = function(row) {
$scope.retrievedData.splice(row, 1);
$scope.initData.splice(row, 1);
$window.localStorage.setItem('initData', JSON.stringify($scope.initData));
}
});

HTML:

<table class="table table-bordered table-striped table-hover">
<thead>
<tr>
<th>
<span ng-show="sortedType == 'firstName' && sortedReverse" class="fa fa-long-arrow-up"></span>
<span ng-show="sortedType == 'firstName' && !sortedReverse" class="fa fa-long-arrow-down"></span>
<span href="#" ng-click="sortedType = 'firstName'; sortedReverse = !sortedReverse" style="cursor:pointer;">First Name</span>
</th>
<th>
<span ng-show="sortedType == 'lastName' && sortedReverse" class="fa fa-long-arrow-up"></span>
<span ng-show="sortedType == 'lastName' && !sortedReverse" class="fa fa-long-arrow-down"></span>
<span href="#" ng-click="sortedType = 'lastName'; sortedReverse = !sortedReverse" style="cursor:pointer;">Last Name</span>
</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="(k, v) in retrievedData | orderBy: sortedType: sortedReverse">
<td>{{v.firstName}}</td>
<td>{{v.lastName}}</td>
<td>
<button class="btn btn-primary">Edit</button>
<button class="btn btn-primary" ng-click="removeRow();">Delete</button>
</td>
</tr>
</tbody>
</table>

现在,我相信它的作用已经很清楚了。它将数据从 $scope.initData 分配给 localStorage,然后将其插入到 HTML 中。函数 removeRow() 删除表中的行并使用最新操作更新 localStorage。问题在于,每次我重新加载 HTML 时,都会加载初始 localStorage 数据,而不是更新后的数据。我知道这是因为我在这里分配它:$window.localStorage.setItem('initData', JSON.stringify($scope.initData));但我不知道如何在刷新后保持更新。

请指教。

谢谢。

最佳答案

您的代码行 $window.localStorage.setItem('initData', JSON.stringify($scope.initData)); 会在您每次刷新时重置数据。

将此行替换为:

if(!localStorage.getItem('initData')){
$window.localStorage.setItem('initData', JSON.stringify($scope.initData));
}

此外,您根本不应该有那条线。从空的本地存储开始,仅从 UI 添加新条目。

上面的代码只运行一次,第一次运行应用程序。

如果您想在每次列表为空时重新插入数据,请尝试以下操作

if(!localStorage.getItem('initData') || JSON.parse(localStorage.getItem('initData')).length === 0){
$window.localStorage.setItem('initData', JSON.stringify($scope.initData));
}

关于javascript - 刷新后如何保留localStorage值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44564795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com