ExtJS - localStorage

时间:2011-10-31 09:44:23

标签: extjs4 local-storage

我有'电影'模型并在Ext.data.Store中保存数据。电影以gridPanel显示。在给出搜索参数并点击按钮存储后重新加载。

现在,我正在尝试使用localStorage。它应该将数据保存在监听器的功能中:

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

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

我该怎么做?


更新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)获取对象的正确方法吗?

我应该如何检查是否有缓存的搜索结果(并加载到movieDataStore / movieGridPanel)?

2 个答案:

答案 0 :(得分:2)

您可以通过调用静态create方法来创建本地存储的实例。以下是如何做到这一点:

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

您可以使用setget方法存储和检索值。这是一个例子:

myLocalStore.set('srhTxt',value);

如果您有许多参数,您可以将它们组合成一个对象并存储。

答案 1 :(得分: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));
        ...
    }