Sencha Touch: Ext.DataView не показывает данные магазина - PullRequest
1 голос
/ 23 июня 2011

Я знаю, что типичная причина отсутствия данных в DataView - неправильная модель или JSON. Из того, что я могу сказать, мое право ... поэтому я не уверен, почему мой DataView пуст.

Контроллер

rpc.controllers.AboutController = new Ext.Panel({
    id: 'rpc-controllers-AboutController',
    title: 'About',
    iconCls: 'info',
    layout: 'card',
    scroll: 'vertical',
    items: [rpc.views.About.index],
    dockedItems: [{ xtype: 'toolbar',
        title: 'RockPointe Church | Mobile'
    }],
    listeners: {
        activate: function () {
            if (rpc.stores.AboutStore.getCount() === 0) {
                rpc.stores.AboutStore.load();
            }
        }
    }
});

View

rpc.views.About.index = new Ext.DataView({
    id: 'rpc-views-about-index',
    itemSelector: 'div.about-index',
    tpl: '<tpl for="."><div class="about-index">{html}</div></tpl>',
    store: rpc.stores.AboutStore,
    fullscreen: true,
    scroll: 'vertical'
});

Магазин

rpc.stores.AboutStore = new Ext.data.Store({
    id: 'rpc-stores-aboutstore',
    model: 'rpc.models.AboutModel',
    autoLoad: true,
    proxy: {
        type: 'scripttag',
        url: WebService('About', 'Index'),
        method: 'GET',
        reader: {
            type: 'json',
            root: 'results'
        },
        afterRequest: function (request, success) {
            if (success) {
                console.log("success");
            } else {
                console.log("failed");
            }
            console.log(request);
        }
    }
});

rpc.stores.AboutStore.proxy.addListener('exception', function (proxy, response, operation) {
    console.log(response.status);
    console.log(response.responseText);
});

Модель

rpc.models.AboutModel = Ext.regModel('rpc.models.AboutModel', {
    fields: ['html']
});

1024 * JSON *

mycallback ({"results": {"html": "... содержимое удалено для краткости ..."}, "success": true});

Кто-нибудь может увидеть, что я могу здесь делать неправильно?

Нет ошибок консоли / javascript. И ресурсы показывают, что я на самом деле вытаскиваю JSON из WebService.

Если я использую console.log(rpc.stores.AboutStore.getCount()); внутри моего activate слушателя на AboutController, результат всегда будет 0 , и я не совсем уверен, почему

вот промежуточное приложение, если вы хотите увидеть запрос
http://rpcm.infinitas.ws/ (обратите внимание, срок действия этой ссылки истечет)

1 Ответ

1 голос
/ 25 июня 2011

Попробуйте вернуть значение json в виде массива, а не объекта. Я думаю, что Ext ожидает массив записей вместо одной.

Например

"{results: [{" html ":" Your html "}]}"

...