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 を使用するのと同じようにストアが自動的に作成されるのではないかと思いましたか? フィールドはストアに自動的にバインドされませんか、それとも明示的にストアを作成する必要がありますか?

4

2 に答える 2

1

ビューがストアを必要としていることを確認してください。おそらくそれはまだ存在していません (そして ID で見つけられるようにする必要があります):

requires: ['App.store.MyStore']
于 2012-12-16T19:36:26.367 に答える
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'

}   
});
于 2013-08-05T22:50:25.480 に答える