ExtJS:无法调用方法'getProxy'

时间:2013-09-06 21:39:47

标签: extjs extjs4

为什么这会因cannot call method 'getProxy' of undefined而失败?

{
    name: 'customer_name',
    xtype: 'combobox',
    fieldLabel: 'Customer',
    emptyText: 'ex. Google',
    allowBlank: false,
    queryMode: 'local',
    store: Ext.create('Ext.data.ArrayStore', {
        storeId: 'myStore',
        fields: ['name'],
        data: [ 'google', 'facebook', 'twitter']
    }),
    displayField: 'name'
}

取自docs ...

100%的代码失败了。

2 个答案:

答案 0 :(得分:1)

我认为因为'name

中缺少最终引用

此代码可以正常使用

Ext.widget({
    name: 'customer_name',
    xtype: 'combobox',
    fieldLabel: 'Customer',
    emptyText: 'ex. Google',
    allowBlank: false,
    queryMode: 'local',
    store: Ext.create('Ext.data.ArrayStore', {
        storeId: 'myStore',
        fields: ['name'],
        data: [ 'google', 'facebook', 'twitter']
    }),
    displayField: 'name'
})

答案 1 :(得分:1)

问题可能是您在对象的原型上定义项目。你不应这样做,因为它意味着它将被所有实例共享,它也会在定义类时尝试实例化你的商店,而不是在实例化类时。

而不是

Ext.define('my.Panel', {
    items: {
        name: 'customer_name',
        xtype: 'combobox',
        fieldLabel: 'Customer',
        emptyText: 'ex. Google',
        allowBlank: false,
        queryMode: 'local',
        store: Ext.create('Ext.data.ArrayStore', {
            storeId: 'myStore',
            fields: ['name'],
            data: [ 'google', 'facebook', 'twitter']
        }),
        displayField: 'name'
    } 
});

待办事项

Ext.define('my.Panel', {
    initComponent: function() {
        this.items =  {
            name: 'customer_name',
            xtype: 'combobox',
            fieldLabel: 'Customer',
            emptyText: 'ex. Google',
            allowBlank: false,
            queryMode: 'local',
            store: {
                // Let Ext instantiate the store
                type: 'array',
                // Don't use this, it's an euphemism for a global
                storeId: 'myStore',
                fields: ['name'],
                data: [ 'google', 'facebook', 'twitter']
            },
        displayField: 'name'
    } 
});