我在stackoverflow(this和this)扫描了很多线程,但没有一个帮我解决问题。所以,我有一个像这样定义的商店:
Ext.define('fileseditor.store.fileseditorNavigStore',{
extend:'Ext.data.TreeStore',
...
我已经听说过吸气剂,并试图在我的控制器中执行此操作:
init: function(){
this.getfileseditorNavigStoreStore().addListener('load', this.finishedLoading, this);
但这会导致错误this.getfileseditorNavigStoreStore is not a function
。
答案 0 :(得分:1)
这样做:
http://docs.sencha.com/extjs/4.2.3/#!/api/Ext.app.Controller-cfg-stores
写下你自己的吸气剂:
Ext.define("MyApp.controller.Foo", {
extend: "Ext.app.Controller",
requires: [
'MyApp.store.Users',
'MyApp.store.Vehicles'
]
getUsersStore: function() {
return this.getStore("Users");
},
getVehiclesStore: function() {
return this.getStore("Vehicles");
}
});
或更短
Ext.define("MyApp.controller.Foo", {
extend: "Ext.app.Controller",
stores: ['Users', 'Vehicles']
});
=>你可以使用de storeId或fullName(fileseditor.store.fileseditorNavigStore)
监听控制器中事件的另一种方法是:
http://docs.sencha.com/extjs/4.2.3/#!/api/Ext.app.Controller-method-listen
收听"加载" Store使用storeId =" myStoreId":
触发的事件 Ext.define('AM.controller.Users', {
init: function() {
this.listen({
store: {
'#myStoreId': {
load: this.onMyStoreLoad
}
}
});
},
...
});
Btw:按照惯例,顶级命名空间和实际的类名应该在CamelCased中,其他一切都应该是低级的。所以FilesEditor.store.FilesEditorNaviagStore
答案 1 :(得分:1)
var me = this;
var filesEditorStore = Ext.create( 'fileseditor.store.fileseditorNavigStore' , {
storeId : 'fileseditor'
} );
filesEditorStore.on( 'load' , function ( store , records , successful , eOpts ) {
if ( successful ) {
me.finishedLoading();
}
} );