如何使用Sencha Touch中的存储从Control中填充Ext.dataview.List?

时间:2013-02-11 08:27:33

标签: extjs sencha-touch sencha-touch-2

Ext.dataview.List中调用方法时,我需要使用Store中的某个值动态填充Controller。知道怎么做吗?使用以下代码,我可以看到Ext.dataview.List为空。调试时,我可以看到storeEvents2已正确填充。

如果可能,请提供代码示例。

populateViewsAfterLogIn: function (){
    var me = this;
    debugger
    var storeEvents2 =  Ext.getStore('Events2');
    storeEvents2.load();
    storeEvents2.sync();
    var myEventsList = me.getEventsList();
    myEventsList.initialize();
    myEventsList.data(storeEvents2);



},

STORE

Ext.define('XXX.store.Events2',{
    extend: 'Ext.data.Store',
    requires: ['Ext.data.proxy.JsonP'],

    config:{
        model: 'XXX.model.Event2',
        proxy:{

            type:'jsonp',
            url: Configurations.listAllTimetableEventsCustom,
            reader:'json'
        },
        autoLoad:true,

        sorters: [{ property: 'DateTimeStart', direction: 'ASC'}] ,

        grouper: {
            groupFn: function(item) {
                return item.get('convDate');
            },
            sortProperty: 'groupSorterProp',
            direction: "ASC"
        }

    }
});

查看

Ext.define("XXX.view.EventsList", {

    extend: "Ext.dataview.List",
    alias: "widget.eventslist",
    config: {

        loadingText: "Loading Events...",
        emptyText: '<div class="notes-list-empty-text">No notes found.</div>',
        onItemDisclosure: false,
        itemTpl:    '<div class="list-item-title">\n\
                        <div class="list-item-title-row">\n\
                            <div class="bl-hours"><span class="timetable-hours">{DateTimeStartConverted}</span></div>\n\
                               <div class="bl-event">{EventTitle}</div>\n\
                        </div>\n\
                     </div>',
        grouped: true

    }
});

1 个答案:

答案 0 :(得分:2)

调用data()时应该收到错误,因为此方法不存在。请改用setData

<强>更新

您应该将自己绑定到商店的“加载”事件

populateViewsAfterLogIn: function (){
    var me = this,
        store = Ext.getStore('Events2');
    debugger

    me.getEventsList().setStore(store );
    store.load();
}

setData()期待数组而不是商店实例。在您的情况下,您应该在加载之前将商店绑定到列表。 Sencha会关心任何事情。