我在用户点击投票选择时设置了一个值。它的工作。
.then(function(response) {
localStorage.setItem('isClicked', 'Yes');
var i = +localStorage.key("nid");
var nidId = 'nid' + localStorage.length;
localStorage.setItem(nidId, vm.nid);
vm.clickedBefore = true;
})
这是我的HTML范围:
<div class="card myfunc" ng-repeat="myfunc in myfuncPage.myfuncs" id="{{myfunc.nid}}" >
<div class="item item-text-wrap">
<h2 class="item-icon-left"><i class="icon ion-ios-analytics"></i>
{{myfunc.title}}</h2>
</div>
<div class="item item-text-wrap" ng-show="localstorage">
<img ng-src="{{myfunc.field_image.und[0].imgPath}}"/>
<p class="custom-class" ng-bind-html='myfunc.body.und[0].value'>
</p>
<ul ng-repeat="vote in myfunc.advmyfunc_choice">
<li ng-repeat="voteselect in vote">
<div class="row">
<button class="col button button-outline button-dark" ng-click="myfuncPage.sendNid(myfunc);myfuncPage.sendVote(voteselect);showVoted = ! showVoted" >{{voteselect.choice}}</button>
<div class="voted-screen" ng-show="showVoted">
<h3>Thanks.</h3>
</div>
</div>
</li>
</ul>
</div>
</div>
基本上,我需要通过localStorage记住div,当页面刷新时,隐藏选择div。
ng-show="showVoted"
处理点击,但我需要刷新。
最好的方法是什么?感谢。
答案 0 :(得分:0)
我不确定您使用的是哪个本地存储模块,因此我不具体,但我会编写工厂来处理您需要的值的检索和存储
(function () {
var voteFactory = function (localStorage) {
return {
getVote: function (key) {
var isVoted = false;
// get local storage item, set voted etc
var voted = localStorage.getItem(key);
if(voted) {
isVoted = voted;
}
return isVoted;
},
setVote: function(key, value) {
localStorage.setItem(key,value);
}
};
};
app.factory('voteFactory', ['localStorage', voteFactory]);
})();
然后在用于显示或隐藏的范围控制器/指令中,您将拥有一个函数:
$scope.showVoted = function(key) {
return voteFactory.getVote(key);
}
然后ng-show =&#34; showVoted(theidentifieryouwantouse)&#34;
值得一提的是我会使用ng-if代替ng-show。为了提高效率,您可以将投票存储为数组而不是单个值,并检查是否已检索到所有值,如果没有,则从本地存储获取。然后,您的函数将询问检索到的数组,而不是重复调用本地存储。我也建议在工厂使用承诺,因为从本地存储中检索可能会延迟,导致一些奇怪的事情。
希望这与您所寻找的一致。如果需要,我可以详细说明。