Не удается получить данные из магазина для отображения в качестве модели - PullRequest
0 голосов
/ 01 июля 2011

Я вроде как новичок в Sencha Touch, поэтому, пожалуйста, потерпите меня.

При запуске приложения я установил область просмотра в используемую область просмотра и установил все представления в пространство имен приложения.

launch: function() {
        this.views.viewport = new this.views.Viewport();
        this.views.homecard = this.views.viewport.getComponent('home');
        this.views.usercard = this.views.viewport.getComponent('user');
        this.views.infocard = this.views.viewport.getComponent('info');
}

Окно просмотра сначала загружает домашний вид, и именно здесь я сталкиваюсь с проблемой. Это моя домашняя карта:

ToolbarDemo.views.Homecard = Ext.extend(Ext.Panel, {
    title: "Meny",
    iconCls: "home",
    scroll: "vertical",
    bodyStyle: "background-color: #FFFFFF !important; background-image:                      url(images/background.png) !important; background-repeat:no-repeat; background-position:bottom left;",
    initComponent: function() 
    {
        ToolbarDemo.views.Homecard.superclass.initComponent.apply(this, arguments); 
    },
    store:ToolbarDemo.stores.feedStorer,
    tpl:buttonTemplate,
    dockedItems: 
    [
        {
        xtype: "toolbar"
        }
    ],
    defaults: {height: "110px"},

});

Вот мой шаблон:

var buttonTemplate = new Ext.Template
(
    '<tpl for=".">',
    '   <div class="home_button_container">',
    '       <img class="home_button" src="{url_icon_large}" />',
    '       <p class="home_button_text">{name}</p>',
    '   </div>',
    '</tpl>'
);

Вот моя модель:

Ext.regModel('Feeds', {
    fields: [
        {name: 'name', type: 'string'},
        {name: 'url_icon_small', type: 'string'},
        {name: 'url_icon_medium', type: 'string'},
        {name: 'url_icon_large', type: 'string'},
        {name: 'url_icon_large_p', type: 'string'},
        {name: 'url', type: 'string'},
        {name: 'sort_order', type: 'string'}
    ]
});

Вот мой магазин:

ToolbarDemo.stores.feedStore = new Ext.data.Store({
    model: 'Feeds',
    storeId: 'feedStore',
    proxy: {
        type: 'scripttag',
        url : 'http://localhost/webservice/feeds.php?username=' + sUsername + '&password=' + sPassword,
        reader: {
            type: 'json',
            root: 'feeds'
        }
    },
    autoLoad: true
});

Вот JSON:

{ "каналы": [{ "Имя": "Ссылки", "url_icon_small": "HTTP: URL / link_small.png", "url_icon_medium": "URL / link_medium.png", "url_icon_large": "URL /link_large.png","url":"url/feed_content.php?type=link","sort_order":"1"}],"updated":[{"last_updated":"2011-06-09 11:15:47" }]} * * тысяча двадцать-одна

Проблема в том, что в этом представлении ничего не отображается, и я подозреваю, что это может быть что-то не так с моделью? Я вошел в магазин, и я вижу, что он получает данные, которые он должен.

Кто-нибудь получил предложение исправить это?

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


РЕДАКТИРОВАТЬ (Получил подсказку о DataView): Изменение внешней панели:

ToolbarDemo.views.Homecard = new Ext.Panel({

    title: "Meny",
    iconCls: "home",
    scroll: "vertical",
    bodyStyle: "background-color: #FFFFFF !important; background-image: url(images/background.png) !important; background-repeat:no-repeat; background-position:bottom left;",
    initComponent: function() 
    {
        ToolbarDemo.views.Homecard.superclass.initComponent.apply(this, arguments); 
    },
    dockedItems: 
    [
        {
        xtype: "toolbar"
        }
    ],
    defaults: {height: "110px"},
    items: new Ext.DataView(
    {
        tpl:buttonTemplate,
        store: ToolbarDemo.stores.feedStorer,
        autoHeight:true,
        multiSelect: true,
        loadingText: 'Laster data',
        itemSelector:'div.home_button_container',
        emptyText: 'No images to display'
    })
});

1 Ответ

0 голосов
/ 03 июля 2011

В настоящее время эта настройка обрабатывается Ext.Dataview, а не Ext.Panel. Все, что наследует форму Ext.Component, может быть передано в параметры data и tpl и вызвать загрузку тела с результатом передачи данных в tpl.

Однако вы используете store для обработки данных, которые не встроены в класс Ext.Panel. Если вы преобразуете в Ext.Dataview и определите необходимые необходимые параметры (при попытке создать его без всех необходимых параметров будут возникать ошибки), тогда ваш шаблон / панель будет отображаться правильно.

...