2011-10-31 20 views
1

私は 'Movie'モデルを持ち、Ext.data.Storeにデータを保持しています。ムービーは、gridPanelで表示されます。検索パラメータを与えた後、ボタンストアをクリックしてリロードしています。ExtJS - localStorage

今、私はlocalStorageを使用しようとしています。むしろリスナーの機能の中にデータを保存する必要があります:

listeners: { 
       'click': function() { 
        movieDataStore.sync(); 
        var textValue = Ext.getCmp("searchFieldId").getValue(); 

        movieDataStore.load({ 
         params : { 
          start : 0, 
          limit : 25, 
          t : textValue 
         } 
        }); 
       } 
      } 

どうすればいいですか?


のUPDATE V1

私はこのようなキャッシュ変数を初期化する必要があり、私はExt.state.LocalStorageProviderを使用する場合:

 var movieLocalCacheStore = Ext.state.LocalStorageProvider.create(); 

    var movieGridPanel = Ext.create('Ext.grid.Panel', { 
     store : movieDataStore, 

     tbar : [ 'Search', { 
      xtype : 'textfield', 
      name : 'searchField', 
      id: 'searchFieldId', 
      emptyText : 'Put movie title here', 
      hideLabel : true, 
      width : 200 
     }, { 
      xtype : 'button', 
      text : 'Search', 
      tooltip : 'Search for movie', 
      listeners: { 
       'click': function() { 
        var textValue = Ext.getCmp("searchFieldId").getValue(); 

        movieDataStore.load({ 
         params : { 
          start : 0, 
          limit : 25, 
          t : textValue 
         } 
        }); 
        movieDataStore.sync(); 
        movieGridPanel.getView().refresh(); 

        //localStorage.setItem(textValue, movieDataStore.getAt(0)); 
        movieLocalCacheStore.set(textValue, movieDataStore.getAt(0)); 

       } 
      } 
     } ] 
    }); 

私は 'MovieModel'というモデルを持っています。それはオブジェクトを取得する正しい方法はmovieDataStore.getAt(0)ですか?

キャッシュされた検索結果(ムービーデータストア/ movieGridPanelに読み込み)があるかどうかを確認するにはどうすればよいですか?

答えて

0

最後に、私はのlocalStorage変数を使用して、それを解決:

var textValue = Ext.getCmp("searchFieldId").getValue();     

    var tmpRecord = localStorage.getItem(textValue); 
    if(tmpRecord != null) { 
       ... 
    } else { 
     var movieRecord = { 
       title : data.Title, 
       year : data.Year, 
       genre : data.Genre, 
       plot : data.Plot, 
       poster : data.Poster 
      }; 

     localStorage.setItem(textValue, JSON.stringify(movieRecord)); 
     ... 
    } 
2

ローカルストレージのインスタンスを作成するには、static createメソッドを呼び出します。ここではあなたがそれを行うことができる方法である。

var myLocalStore = Ext.state.LocalStorageProvider.create(); 

あなたが保存してsetgetメソッドを使用して値を取得することができます。ここに例があります:

myLocalStore.set('srhTxt',value); 

多くのパラメータがある場合は、それらをオブジェクトに組み合わせて保存することもできます。

+0

おかげで、@Abdel Olakara、について説明するために。私は 'LocalStorageProvider'を使って私の更新されたソースコードを書きました。 – bontade