2013-06-06 28 views
1

我想選擇性地在Sencha中對商店進行排序。
在sencha中選擇性地整理商店

場景:假設我的商店中有5個元素,如下所示。
1.廣告
2抗體
3.交流
4.房顫
5.閡

所以,當我在列表中顯示這些記錄,我想保持 「AC」 總是在第0位置(第一記錄)和其他4排序象下面這樣:
1. AC
2.抗體
3.廣告
4.閡
5.了Af

排序商店等下面,
分揀機:{
屬性: '記錄',
方向: 'ASC'
},

會給一般排序結果如下:
1 。抗體
2.交流
3.廣告
4.閡
5.了Af

感激,如果有人可以提供幫助。謝謝。

回答

2

您可以使用sorterFn而不是property,使用自定義函數進行排序。

在您的例子,這將得到期望的結果:

{ 
    direction: 'ASC' 
    ,sorterFn: function(left, right) { 
     var l = left.get('record') || '', 
      r = right.get('record') || ''; 

     // Special case 'Ac' is always first 
     if (l === 'Ac') { 
      if (r === 'Ac') { 
       return 0; 
      } else { 
       return -1; 
      } 
     } else if (r === 'Ac') { 
      return 1; 
     } 

     // Defaults to a standard string comparison 
     else { 
      return l.localeCompare(r); 
     } 
    } 
} 
0


在上面的場景中,我實際上是從客戶端添加「Ac」並從服務器獲取其他記錄。因此,我沒有使用Sencha分揀機對商店進行分揀,而是按照以下方式進行分揀。
1.修改從服務器獲取數據的查詢爲「select xxx,xxx,record by xxxxx order by record」
2.在商店的第0位添加「Ac」。
store.add(0,{記載:「AC」})

雖然我完全同意,它的場景之一,並沒有回答我提出的問題。