Sencha Touch пустой экран после добавления компонента списка для просмотра - PullRequest
1 голос
/ 10 февраля 2012

Я пытаюсь добавить компонент List в представление в Sencha Touch. Приложение работает правильно, пока я не попытаюсь добавить компонент списка. После добавления списка в представление приложение загружается (показывает заставку), а затем отображается только белый экран.

Я использую Sencha Touch, XCode 4, iOS 5 SDK и PhoneGap 1.3.0.

Заранее спасибо!

вот код для просмотра:

plantanalyzer.views.BuildingList = Ext.extend(Ext.Panel, {
dockedItems: [{
            dock: 'top',
            html: '<img src="images/logo.jpg"/>'
        },
        {
        xtype: 'list',
        itemTpl : '{name}',
        grouped : true,
        indexBar: true,
        store: newStore

    }]
});

и код моего тестового хранилища данных. У меня есть это в главе index.html:

var newStore;

    function onBodyLoad(){
        Ext.regModel('Plants', {
            fields: ['name', 'efficiency']
        });

        newStore = new Ext.data.JsonStore({
            model  : 'Plants',
            sorters: 'name',

            getGroupString : function(record) {
                return record.get('name')[0];
            },

            data: [
                {name: 'Milwaukee',   efficiency: .85},
                {name: 'New York',    efficiency: .65},
                {name: 'St Paul',     efficiency: .73},
                {name: 'Phoenix',     efficiency: .35},
                {name: 'Los Angeles', efficiency: .45},
                {name: 'Miami',       efficiency: .75},
                {name: 'London',      efficiency: .39},
                {name: 'Moscow',      efficiency: .95},
                {name: 'Hogwarts',    efficiency: .99}
            ]
        });
    }

1 Ответ

1 голос
/ 10 февраля 2012

Вы создаете свое хранилище при загрузке тела, то есть после загрузки списка, поэтому объект newStore становится пустым, когда список необходим. Поставьте этот код:

 Ext.regModel('Plants', {
        fields: ['name', 'efficiency']
    });

    newStore = new Ext.data.JsonStore({
        model  : 'Plants',
        sorters: 'name',

        getGroupString : function(record) {
            return record.get('name')[0];
        },

        data: [
            {name: 'Milwaukee',   efficiency: .85},
            {name: 'New York',    efficiency: .65},
            {name: 'St Paul',     efficiency: .73},
            {name: 'Phoenix',     efficiency: .35},
            {name: 'Los Angeles', efficiency: .45},
            {name: 'Miami',       efficiency: .75},
            {name: 'London',      efficiency: .39},
            {name: 'Moscow',      efficiency: .95},
            {name: 'Hogwarts',    efficiency: .99}
        ]
    });

Прямо перед:

plantanalyzer.views.BuildingList = Ext.extend(Ext.Panel, {
dockedItems: [{
            dock: 'top',
            html: '<img src="images/logo.jpg"/>'
        },
        {
        xtype: 'list',
        itemTpl : '{name}',
        grouped : true,
        indexBar: true,
        store: newStore

    }]
});

Чтобы проверить, так ли это на самом деле.

Еще одно предложение заключается в том, что вы должны поместить список в элементы панели, а не в закрепленные элементы. Кстати, ваш код не очень хорошо структурирован. Вы должны следовать паттерну MVC. Проверьте это https://vimeo.com/17705448 и это http://www.sencha.com/learn/a-sencha-touch-mvc-application-with-phonegap/.

...