在Sencha Touch 2中,如何使用ListPaging自定义加载掩码并对列表项进行排序

时间:2014-01-03 09:59:37

标签: sorting sencha-touch-2 loading

我有两个问题:

1.我不喜欢ListPaging中的加载掩码,有没有办法自定义它? 这是我的代码:

商店

Ext.define('tyoa.store.request.Documents', {
extend: 'Ext.data.Store',

config: {
    model: 'tyoa.model.request.Document',
    storeId: 'documents',
    pageSize:10,
    // autoSync:true,
}
});

Controller中的方法,它将加载第一页并显示视图:

showYuejianRequestView:function(){
    storeDocuments = Ext.getStore('documents');
    storeDocuments.removeAll();
    storeDocuments.setProxy({
        type:'ajax',
        limitParam:'limit',
        pageParam:'page',
        url:Global.API+'/request/bangongting/requestConsultList.jsp',
        reader:{
            type:'json',
            rootProperty:'requestConsult',
            totalProperty:'total',
        }
    }); 
    storeDocuments.loadPage(1);
    var requestList = Ext.create('tyoa.view.request.RequestConsultList');
    global.viewDirectionLeft(requestList);
},

列表视图:

Ext.define('tyoa.view.request.RequestConsultListDetail',{
extend:'Ext.List',
alias:'widget.requestConsultListDetail',
xtype:'requestConsultListDetail',
requires: ['Ext.plugin.ListPaging',
               'Ext.field.Search',
               'Ext.data.JsonP'],   
config:{
    //emptyText: '没有已办过的文件!',
    plugins:[
        {
            xclass: 'Ext.plugin.ListPaging',
            autoPaging: false,
            noMoreRecordsText: 'No more',
            loadMoreText: 'Load more...'
        },
    ],
    cls: 'x-contacts',      
    itemTpl: [
       '<div class="headshot"><img src='+Global.IMG+'{createUserImgUrl} width="37" height="37"/></div>',
        '{senderName}',
        '<img width="20" height="27" style="float:right; margin:5px 0px;" src="resources/images/arrow.png" />',
        '<span class="time">{sendTime}</span>',
        '<tpl if="title!=null"><span>{title}</span></tpl>',
        '<tpl if="title==null"><span>{content}</span></tpl>',              
    ].join(''),
    store: 'documents'
}
});

2.如何对listpaging中的列表项进行排序(比如按时间排序项)?我曾经在店里使用过这个,

sorters: [
    {
        property: 'timeStr',
        direction: 'DESC'
       },
   ],

然而,当我加载第二页时,两页的项目会一起搅拌并再次使用,因此您无法分辨哪一页是第二页,我不希望发生这种情况。
任何帮助或提示将不胜感激,谢谢你提前!

1 个答案:

答案 0 :(得分:0)

几天前,我的一位同事解决了这个问题。在/sdk/src/dataview/DataView.js(在st 2.0中),在第785行,您将看到

if (loadingText) {
    this.setMasked({
       xtype: 'loadmask',
       message: loadingText
});

只需覆盖它,例如:

if (loadingText) {
    this.setMasked({
        xtype: 'loadmask',
        indicator: false,
        message:'<img src="resources/images/ajax-loader.gif"/>',
        messageCls:'width:48px;'
});

列表分页加载掩码将被更改!从未想过它出现在DataView.js