Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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 ExtJS 5.1-Grid.reconfigure后Grid with gridfilters插件中断_Javascript_Extjs_Grid_Extjs5 - Fatal编程技术网

Javascript ExtJS 5.1-Grid.reconfigure后Grid with gridfilters插件中断

Javascript ExtJS 5.1-Grid.reconfigure后Grid with gridfilters插件中断,javascript,extjs,grid,extjs5,Javascript,Extjs,Grid,Extjs5,我正在将一些ExtJS4的东西迁移到ExtJS5.1。我有一个网格,它从服务器获取元数据,并在metachange事件中重新配置存储: store: Ext.create('Ext.data.Store', { model: 'MyModel', listeners: { metachange: function (store, meta) { this.grid.reconfigure(store, meta.columns);

我正在将一些ExtJS4的东西迁移到ExtJS5.1。我有一个网格,它从服务器获取元数据,并在metachange事件中重新配置存储:

store: Ext.create('Ext.data.Store', {
    model: 'MyModel',
    listeners: {
        metachange: function (store, meta) {
            this.grid.reconfigure(store, meta.columns);
        },
        scope: this
    },
    proxy: {
        type: 'ajax',
        url: '/mygriddata',
        reader: {
            type: 'json',
            rootProperty: 'rows',
            totalProperty: 'totalRows'
        }
    }
})
我还为此网格启用了gridfilters。当存储首次加载时,一切正常。我可以按下网格列的触发器按钮,列菜单显示“升序排序”、“降序排序”、“过滤器”,我可以使用我为该列指定的过滤器(日期、字符串等)

但是,在存储区使用不同的元数据重新加载后,情况会发生变化,从而触发metachange事件并调用grid.reconfigure。具体地说,当我单击网格列的触发器按钮时,我会得到一个“未定义不是函数错误”,并且列菜单不会出现

如果我在未单击列触发器按钮的情况下更改元数据,则不会发生此错误-这与构建过滤器菜单项,然后重新配置网格有关,这会破坏过滤器菜单项。看起来,当我重新配置网格时,我还需要以某种方式刷新过滤器或重建菜单项,但我不知道如何做到这一点。任何帮助都将不胜感激,谢谢

错误的完整堆栈跟踪:

Uncaught TypeError: undefined is not a function ext-all-debug.js:86455
Ext.define.getDockedItems ext-all-debug.js:86465 
Ext.define.getDockingRefIt emsext-all-debug.js:87641 
Ext.define.getRefItems ext-all-debug.js:130763 
Ext.define.getRefItems ext-all-debug.js:75497
Ext.define.getRefItems ext-all-debug.js:7378
Ext.Base.Base.addMembers.callParent ext-all-debug.js:87640 
Ext.define.getRefItems ext-all-debug.js:15057 
getItems ext-all-debug.js:15310 
cq.Query.Ext.extend._execute ext-all-debug.js:15271 
cq.Query.Ext.extend.execute ext-all-debug.js:15480 
Ext.apply.query ext-all-debug.js:63058 
Ext.define.query ext-all-debug.js:63101 
Ext.define.down ext-all-debug.js:101658
Ext.define.showMenuBy ext-all-debug.js:101651
Ext.define.onHeaderTriggerClick ext-all-debug.js:101179
Ext.define.onHeaderCtEvent ext-all-debug.js:11800
fire ext-all-debug.js:18530
Ext.define.fire ext-all-debug.js:18506
Ext.define.publish ext-all-debug.js:18556
Ext.define.doDelegatedEvent ext-all-debug.js:18543
Ext.define.onDelegatedEvent ext-all-debug.js:4402
Ext.Function.ExtFunction.bind.method
我的解决方案:

Ext.define('Overrides.grid.filters.Filters', {
    override: 'Ext.grid.filters.Filters',

    onReconfigure: function(grid, store, columns, oldStore) {
        var me = this;

        me.sep = Ext.destroy(me.sep);
        if (me.menuItems && me.menuItems[grid.id]) {
            me.menuItems[grid.id].destroy();
        }

        me.callParent(arguments);
    }
});

控制台中出现了哪些错误?在不知道返回和配置什么元数据的情况下,很难诊断此问题。在版本更改中,配置属性可能已更改或已被删除。