Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将侦听器添加到Ext.js创建存储将引发错误_Javascript_Extjs_Store_Listeners - Fatal编程技术网

Javascript 将侦听器添加到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

我正在使用Ext.js尝试用商店填充手风琴面板

下面是一段代码:

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?它所做的只是设置控制器。这在其他地方是没有意义的。我认为你看错方向了。