Javascript 将侦听器添加到Ext.js创建存储将引发错误
我正在使用Ext.js尝试用商店填充手风琴面板 下面是一段代码:Javascript 将侦听器添加到Ext.js创建存储将引发错误,javascript,extjs,store,listeners,Javascript,Extjs,Store,Listeners,我正在使用Ext.js尝试用商店填充手风琴面板 下面是一段代码: var store = Ext.create('Ext.data.Store', { model: jobStatusModel, storeId: jobStatusDescription, sortOnLoad: true, proxy: { type: 'aj
var store = Ext.create('Ext.data.Store', {
model: jobStatusModel,
storeId: jobStatusDescription,
sortOnLoad: true,
proxy: {
type: 'ajax',
url: 'http://server/JobScheduler/Service.svc/JobScheduler/Jobs/' + jobStatusDescription,
reader: {
type: 'json'
}
},
autoLoad: true,
listeners: {
load: fillItemsAndSetPanelTitle
}
});
这嵌入到为每个作业状态运行的循环中
在这个循环之外,我有fillItemsAndSetPanelTitle函数
每当我从创建存储中删除侦听器时,它都可以正常运行。但除此之外,我得到了一个错误:
Uncaught TypeError: Cannot read property 'fn' of undefined
知道我做错了什么吗
编辑:我发现它会抱怨,因为我正在手动调用我的主函数
以前,它使用:
this.control({
"#MainMenuPanel": {
render: this.onMainMenuPanelRender
}
});
我想在调用onMainMenuPanelRender之前等待我的存储加载,但是在等待所有存储加载的函数中添加this.control调用似乎不起作用,所以我手动调用了this.onMainMenuPanelRender
所以我想我现在的问题是:如何在初始init函数之外调用this.control 为什么要在controller.init之外调用this.control?它所做的只是设置控制器。这在其他地方是没有意义的。我认为你看错方向了 此外,建议在应用程序加载时使用Ext.define定义存储。同时,使函数FillItems和SetPanelTitle成为控制器的成员。我不知道“填充项”的作用是什么,但是如果您使用网格面板来显示商店,那么当商店加载时,网格会自动填充 我在代码中看到的另一个问题是,在加载存储时但在创建面板之前设置面板标题。我认为正确的顺序应该是:加载存储,获取面板标题,直接用正确的标题创建面板
我建议您阅读关于ExtJs中MVC模式的文档。它会让你从许多头痛中解脱出来 为什么要在controller.init之外调用此.control?它所做的只是设置控制器。这在其他地方是没有意义的。我认为你看错方向了。