2017-09-02 12 views
0

ユーザーが投票の選択肢をクリックしたときに値を設定しました。その働き。ng-repeatでlocalStorage値フィルタを使用する方法

.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> 

、私は選択肢のdivを隠し、のlocalStorageとページの更新を経由してdivのを覚えている必要があります。

ng-show="showVoted"クリックで作業しますが、私はリフレッシュする必要があります。

どのような方法が最適ですか?ありがとう。

答えて

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-ショー=「showVoted(theidentifieryouwantouse)」

また、麦汁です私はng-showの代わりにng-ifを使用すると言いました。より効率的にするには、個々の値の代わりに配列として投票を保存し、すべての値を取得したかどうかを確認し、そうでない場合はローカルストレージから取得します。次に、関数はローカルストレージへの繰り返し呼び出しの代わりに取得した配列を調べます。地元のストレージからの検索が遅れてしまい、いくつかの奇妙な問題が発生する可能性があるため、私はおそらく工場で約束をしています。

これはあなたが探している線に沿っていることを望みます。私は必要に応じて詳述することができます。