1

我想有选择地对煎茶中的一家商店进行分类。

场景:假设我的商店中有 5 个元素,如下所示。
1. Ad
2. Ab
3. Ac
4. Af
5. Ae

因此,当我在列表中显示这些记录时,我想将“Ac”始终保持在第 0 位(第 1 条记录),其他 4 条排序如下:
1. Ac
2. Ab
3. Ad
4. Ae
5. Af

像下面这样对商店进行排序,
sorters:{
property: 'record',
direction: 'ASC'
},

将给出常规排序结果如下:
1. Ab
2. Ac
3. Ad
4. Ae
5. Af

感谢有人可以提供帮助。谢谢。

4

2 回答 2

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);
        }
    }
}
于 2013-06-06T10:19:30.067 回答
0


在上述场景中,我实际上是从客户端添加“Ac”并从服务器获取其他记录。因此,我没有使用 Sencha 分拣机对我的商店进行分类,而是按如下方式进行。
1. 修改从服务器获取数据的查询为“select xxx, xxx, record from xxxxx order by record”
2. 在store的第0个位置添加“Ac”。
store.add(0,{record:"Ac"})

尽管我完全同意,但这是其中一种情况,而不是我所问问题的答案。

于 2013-06-06T10:12:36.580 回答