我有'电影'模型并在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)?
答案 0 :(得分:2)
您可以通过调用静态create方法来创建本地存储的实例。以下是如何做到这一点:
var myLocalStore = Ext.state.LocalStorageProvider.create();
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));
...
}