Как загрузить XML в список, используя Sencha / PhoneGap? - PullRequest
0 голосов
/ 10 октября 2011

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

В моей модели (Event.js) У меня есть это:

Ext.regModel('Event', {
    fields: [
        {name: 'title', type: 'string'}
    ]
});

В моем магазине (eventsstore.js) :

ToolbarDemo.eventstore = new Ext.data.Store({
    model: 'Event',
    sorters: 'title',

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

    proxy: {
        type: 'ajax',
        url: 'http://the-url-to-the-file.xml',
        reader: {
            type: 'xml',
            root: 'events',
            record: 'event'
        }
    },
    autoLoad: true
});

И в представлении (пробовал в виде списка) :

ToolbarDemo.views.Eventscard = Ext.extend(Ext.List, {
    title: "Events",
    iconCls: "search",

    store: ToolbarDemo.eventstore,

    itemTpl: '{title}',
    grouped: true,
    indexBar: true,


    cardSwitchAnimation: 'slide'

});

Ext.reg('eventscard', ToolbarDemo.views.Eventscard);

И опробовано как панель :

ToolbarDemo.views.Eventscard = Ext.extend(Ext.Panel, {
    title: "Events",
    iconCls: "search",

    dockedItems: [{
        xtype: 'toolbar',
        title: 'Events'
    }],

    layout: 'fit',
    items: [{
        xtype: 'list',
        store: ToolbarDemo.eventstore,
        itemTpl: '{title}',
        grouped: true
    }],
    //This was an experiment, safe to leave out?
    initComponent: function() {
        //ToolbarDemo.eventstore.load();
        ToolbarDemo.views.Eventscard.superclass.initComponent.apply(this, arguments);
    }
});

Ext.reg('eventscard', ToolbarDemo.views.Eventscard);

Теперь, когда я перехожу к этому виду карты, отображается загрузочный оверлей / прядильщик, но это все, что делает списокне появляютсяЕсть идеи, что я делаю не так?

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Я не очень знаком с этим, я использовал это, чтобы отобразить список .. попробуйте это

ToolbarDemo.eventstore.load();

var itemTpl = new Ext.XTemplate('<div id='title'>{title}</div>');

this.eventStoreList = new Ext.List({
            id: 'eventStoreList',
            store: ToolbarDemo.eventstore,
            itemTpl: itemTpl,
            height: 370,            
            indexBar: false
        });

this.eventStoreListContainer =  new Ext.Container( {
            id : 'eventStoreListContainer',
            items : [this.eventStoreList]
        });


        this.items = [this.eventStoreListContainer];

 ToolbarDemo.views.Eventscard.superclass.initComponent.apply(this);
0 голосов
/ 11 октября 2011

Ну, у меня все получилось!

Я добавил ToolbarDemo.eventstore.read(); в конец кода своего магазина, сохранил XML-файл локально в корневой папке 'www', затем с помощью метода list работал отлично!

Кто-нибудь знает, почему это (вызов удаленного XML) может быть проблемой?

РЕДАКТИРОВАТЬ: Оказывается, что он отлично работает вбраузер так, но не симулятор iPhone.Итак, теперь я вернул его к удаленному URL-адресу и добавил URL-адреса в белый список PhoneGap, и он прекрасно работает:)

...