ExtJS 组合框错误:无法读取未定义的属性“存储”

Posted

技术标签:

【中文标题】ExtJS 组合框错误:无法读取未定义的属性“存储”【英文标题】:ExtJS Combobox Error: Cannot read property 'store' of undefined 【发布时间】:2017-06-19 21:22:45 【问题描述】:

我有一个标签面板,其中包含几个标签。其中之一包含网格,网格包含 3 个项目: 1 个项目的编辑器类型为“textfield”,2 个项目的编辑器类型为“combobox”。

问题:我想根据之前的combobox过滤combobox store。但由于某种原因,它只在第一次工作。之后商店返回未定义。

这是我的代码:

items:[
    xtype: 'grid',
    id:'schema',
    border: false,      
    data:[],
    columns:
    [
        text     : 'Size',
        dataIndex: 'size',
        id: "SizeDropdown",
        width    : 200,
        sortable : true,
        editor   : 
            xtype: 'combobox',
            id:'SelectSize',
            editable:true,

            valueField: 'typeValue',
            displayField: 'typeValue',
            mode:'local',
            lastQuery: '',
            listeners:
            ,
            store: new Ext.data.SimpleStore(
                fields: ['size', 'typeValue'],
                data: [
                        ['char', '12'],
                        ['char', '30'],
                        ['char', '31'],
                        ['int', '250'],
                        ['int', '500'],
                        ['int', '1000'],
                    ]
            ),
            allowBlank: false,
            validator: function(input)                                 
                return true;
            
           
    ],
    listeners: 
        beforeitemclick: function (eventThis,  record,  rowIndex, e) 

            var SizeStore = Ext.getCmp('SizeDropdown').editor.store

            SizeStore.clearFilter();
            SizeStore.filter('size', record.data.type);
        
    

'record.data.type' 返回 'char' 或 'int',具体取决于以前的组合框和过滤工作正常。但也只是第一次。之后它在这里中断:

var SizeStore = Ext.getCmp('SizeDropdown').editor.store

然后返回:

Cannot read property 'store' of undefined

我正在使用 ExtJs“4.0.7”

【问题讨论】:

您可以将商店移出您的班级。正常定义。我认为在编辑器中定义商店并不是一个好主意。此外,您是否能够在 fiddle.sencha.com 上重新创建您的问题,这样的帮助会容易得多。 @pagep 谢谢,我在课堂外声明了商店并且它有效。 :) 如果您愿意,请将其写为答案,我会接受。 【参考方案1】:

在 Tab 类之外声明商店就可以了。

这是我所做的:

        var sizeDropdownStore = new Ext.data.SimpleStore(
            fields: ['size', 'typeValue'],
            data: [
                    ['char', '12'],
                    ['char', '30'],
                    ['char', '31'],
                    ['int', '250'],
                    ['int', '500'],
                    ['int', '1000'],
            ]
        );


        ...
            xtype: 'combobox',
            id:'SelectSize',
            editable:true,
            valueField: 'typeValue',
            displayField: 'typeValue',
            mode:'local',
            listeners:
            ,
            store: sizeDropdownStore,
            allowBlank: false
        ...

【讨论】:

以上是关于ExtJS 组合框错误:无法读取未定义的属性“存储”的主要内容,如果未能解决你的问题,请参考以下文章

Angular - 无法读取未定义的属性“..”

ExtJS3:无法读取未定义的属性“parentNode”

未捕获的类型错误:无法读取未定义的属性“搜索框”

Vue 组合 API:无法读取未定义的属性“$createElement”

角度ngrx存储错误无法读取未定义的属性“计划”

未捕获的类型错误:无法读取未定义的属性“internalId”(在扩展时对节点进行排序)