Colin
Colin

Reputation: 1855

ExtJS: cannot call method 'getProxy'

Why does this fail with 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'
}

taken from docs...

It 100% fails at this peice of code.

Upvotes: 0

Views: 1425

Answers (2)

Ruan Mendes
Ruan Mendes

Reputation: 92274

The problem is likely that you're defining items on the prototype of your object. You shouldn't do that because it means it will be shared by all instances, also it will try to instantiate your store while defining the class, instead of when the class is instantiated.

Instead of

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'
    } 
});

Do

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'
    } 
});

Upvotes: 1

pllee
pllee

Reputation: 3959

I think cause it is missing an end quote in 'name

This code works fine

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'
})

Upvotes: 1

Related Questions