我的模型定义如下:
Ext.define('MyApp.model.TestModel', {
extend: 'Ext.data.Model',
fields: [
{
name: 'id'
},
{
name: 'p1'
},
{
name: 'p2'
},
{
name: 'p3'
},
{
name: 'p5'
},
{
name: 'p6'
},
{
name: 'p7'
}
]
});
商店的定义如下:
Ext.define('MyApp.store.TestStore', {
extend: 'Ext.data.Store',
requires: [
'MyApp.model.TestModel'
],
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
autoLoad: true,
storeId: 'TestStoreID',
model: 'MyApp.model.TestModel',
proxy: {
type: 'ajax',
url: 'getparams',
reader: {
type: 'json',
root: 'getdata.params'
}
}
}, cfg)]);
}
});
控制器使用ajax代理加载数据,如下所示:
var sIndex = 1;
AppGlobals.mystore = Ext.getStore('PollStore');
AppGlobals.mystore.load({params: {id: sIndex, p1:'1',p2:'2', p3:'3', p4:'5', p5:'6', p6:'7'}});
这一切都很好。我想在写入load命令的地方修改p1,p2,p3,p5,p6,p7的值。也就是说,有没有什么方法可以将硬编码数据直接加载到商店中,而不是callint mystore.load()?
我的意思是,假设我有6个值定义为
var p1val = 1;
var p2val = 2;
var p3val = 3;
var p5val = 4;
var p6val = 5;
var p7val = 6;
无论如何,我可以做到以下几点:
AppGlobals.mystore = Ext.getStore('PollStore');
AppGlobals.mystore.somefunction(p1val, p2val, p3val, p5val, p6val, p7val);
其中somefunction()
可以立即更新商店中的值,而且我不必调用将要从代理获取数据的load()
函数?
答案 0 :(得分:1)
肯定有一种方法可以做到这一点。您正在寻找 loadData 方法。 Here is a link to the method in Sencha Docs.
请务必注意它需要两个参数 - 记录数组(数据)以及是否擦除当前商店记录。默认情况下, loadData 首先删除商店中的所有现有数据,我认为这是您想要做的事情 - 如果是这样,您只需要第一个数组参数。
以下是如何解决问题的代码示例:
store.loadData(data, false);
grid.reconfigure(store);