在sencha touch中将selectfield自动绑定到商店?

时间:2012-12-15 23:26:14

标签: sencha-touch sencha-touch-2

我正在尝试将选择字段绑定到sencha-touch中的商店。但是,我收到以下错误:

Uncaught TypeError: Cannot call method 'on' of undefined 

该字段如下:

{
            xtype: 'selectfield',
            label: 'Gender',
            store: 'GenderStore',
            displayField: 'ItemName',
            valueField: 'Id'
        },

和商店看起来像这样:

Ext.define('MobileApp.store.Gender', {
    extend: 'Ext.data.Store',

    requires: [
        'MobileApp.model.Lookup',
        'Ext.data.proxy.Rest'
    ],

    config: {
        autoLoad: true,
        model: 'MobileApp.model.Lookup',
        storeId: 'GenderStore',
        proxy: {
            type: 'rest',            
            url : '/api/lookup/genders',
            reader: {
                type: 'json'
            }
        }
    }    
});

为什么这不起作用的任何想法?我想也许指定storeId会自动创建类似于使用xtype的商店?该字段是否自动绑定到商店,还是我需要显式创建商店?

2 个答案:

答案 0 :(得分:1)

确保您的视图需要商店。也许它还不存在(它需要它可以通过ID找到它):

requires: ['App.store.MyStore']

答案 1 :(得分:0)

字段

     {
        xtype: 'selectfield',
        label: 'Gender',
        store: GenderStore,
        displayField: 'ItemName',
        valueField: 'Id'
    },

商店

var GenderStore = Ext.create('Ext.data.Store', {
requires: [
    'MobileApp.model.Lookup',
    'Ext.data.proxy.Rest'
],
autoLoad: true,
model: 'MobileApp.model.Lookup',
proxy: {
    type: 'ajax',            
    url : '/api/lookup/genders',
    reader: {
       type: 'json',
       rootProperty: 'd'
    },
    root: 'd'

}   
});