Поле выбора Sencha Touch не может отображать значение из хранилища данных - PullRequest
0 голосов
/ 25 ноября 2011

Я пытаюсь загрузить магазин в поле Select в sencha touch 2.0, но у меня возникла странная проблема: Для следующего кода:

        {
            xtype : 'list',
            store : 'Docbases',
            itemTpl : 'Hello {docbase}!'
        }, {
            xtype : 'selectfield',
            label : 'Docbase',
            id : 'docbase',
            store : 'Docbases',
            displayField : 'docbase',
            valueField : 'docbase',
            placeHolder : 'Select a Value'

        }

Компонент списка может отображаться хорошо, в то время как поле выбора не может отображатьзначение.Когда я нажал на это поле выбора, я получил сообщение об ошибке консоли:

Uncaught TypeError: Cannot call method 'get' of null

Мой магазин объявлен как:

Ext.define('FDMobileClient.store.Docbases', {
    extend : 'Ext.data.Store',
    requires : ['FDMobileClient.model.Docbase'],
    model : 'FDMobileClient.model.Docbase',
    autoLoad : true,
    proxy : {
        type : 'ajax',
        url : '/MobileInternalProject/mobile/getDocbaseList.action',
        reader : {
            type : 'json',
            root : 'docbases'
        }
    },

});

Кто-нибудь есть какие-либо идеи, что я делаю неправильно: (

Я ценю вашу помощь. Спасибо

Длинный

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Ваш магазин мне подходит.Вот что я сделал, чтобы получить сортировку:

  • в вашем представлении конфигурации:

    config: {
       ...
       docStore : null
       ...
    },
    
  • в вашем представлении init:

    initialize: function() {
       ...
       docStore = Ext.create('FDMobileClient.store.Docbases');
       ...
    },
    
  • наконец-то код вашего поля выбора

    {
        xtype : 'list',
        store : 'Docbases',
        itemTpl : 'Hello {docbase}!'
    }, {
        xtype : 'selectfield',
        label : 'Docbase',
        id : 'docbase',
        store : docStore, //NOTE: no quotes!
        displayField : 'docbase',
        valueField : 'docbase',
        placeHolder : 'Select a Value'
    
    }
    

Это сработало для меня, оно должно быть в порядке и для вас.Удачи, Алекс

1 голос
/ 12 декабря 2011

Вы должны дать своему магазину ID и использовать этот идентификатор при обращении к магазину:

Ext.define('FDMobileClient.store.Docbases', {
extend : 'Ext.data.Store',
requires : ['FDMobileClient.model.Docbase'],
model : 'FDMobileClient.model.Docbase',
id : 'DocbaseStore'
...
}
{
...
store : 'DocbaseStore',
displayField : 'docbase',
...
}
...