Extjs 存储区具有数据后激发的事件
我有一个代理存储,它通过两种不同的方式填充—要么通过Extjs 存储区具有数据后激发的事件,extjs,extjs6-classic,Extjs,Extjs6 Classic,我有一个代理存储,它通过两种不同的方式填充—要么通过加载数据,要么通过加载 我有一些行动,应该发生在商店被填满之后;即,应搜索并选择某个记录: preselectByName:function(name, groupName) { var store = this; if(store.preselected) return; store.preselected = true; store.on('load',function() { store.s
加载数据
,要么通过加载
我有一些行动,应该发生在商店被填满之后;即,应搜索并选择某个记录:
preselectByName:function(name, groupName) {
var store = this;
if(store.preselected) return;
store.preselected = true;
store.on('load',function() {
store.selectByName(name, groupName);
store.preselected = false;
},store,{single:true});
}
这样称呼:
if(store.isLoaded) store.selectByName(name, groupName);
else store.preselectByName(name, groupName);
如果存储通过load
填充,但不是通过loadData
填充,则此代码可以正常工作
和load
是否都触发了另一个事件loadRecord
- 否则,我将如何实现一个侦听器来触发这两个事件中的任何一个,以先发生的为准
()datachanged
load
和loadRecord
触发的事件,但请注意,它是从对数据集所做的任何更改触发的
此外:我通常使用它来查找ExtJs中需要的事件:
Ext.util.Observable.capture(myObj, function(evname) {console.log(evname, arguments);})
它捕获myObj
组件触发的所有ExtJs事件,并将其记录到控制台
- 或者,您可以创建一个自定义事件,在
和load
之后手动触发,如:loadData
load事件专门用于从远程数据源读取数据。商店可以扩展以引入满足您需求的事件
/*
@event loadrecords Fires whenever records a loaded into the store.
@param {Ext.data.Model[]} records An array of records
*/
Ext.define('MyApp.data.Store', {
extend: 'Ext.data.Store',
load: function() {
this.callParent(arguments);
this.fireLoadRecords();
return this;
},
fireLoadRecords: function() {
this.fireEvent('loadrecords', this.getRange());
},
loadRecords: function(records, options) {
this.callParent(arguments);
this.fireLoadRecords();
}
});
是的,
datachanged
触发太频繁可能是一个问题。我会查出来的;但是,由于存储中的记录可以以表单编辑,我只想在load
或loadData
上启动,我不确定这是正确的做法。也许你可以尝试一下:你可以尝试将代理改为内存代理,而不是loadData()
,将data
属性设置为所需的数据,然后load()
,最后在load事件中将代理更改回原始。我没有测试这个,只是一个想法。也许有点叮当作响。