有人可以帮助我根据用户定义的标准对商店进行排序吗?
Ext.define('Role', {
extend: 'Ext.data.Model',
fields: [
{name: 'role_id', type: 'int'},
{name: 'role_name', type: 'string'}
]
})
返回的role_name是admin,user,只读,super 我想将其排序为
只读,用户,管理员,超级。
答案 0 :(得分:3)
您可以使用sort()方法对其进行排序,如下所示:
Ext.define('Role', {
extend: 'Ext.data.Model',
fields: [
{name: 'role_id', type: 'int'},
{name: 'role_name', type: 'string'}
]
})
var store = Ext.create('Ext.data.Store', {
model: 'Role',
data: [ // non-sorted data
[ 1, 'user' ],
[ 2, 'super' ],
[ 3, 'read-only' ],
[ 4, 'admin' ]
]
});
// sort the store
store.sort([{
sorterFn: function(v1, v2) {
var order = ['read-only', 'user', 'admin', 'super'],
v1o = order.indexOf(v1.get('role_name')),
v2o = order.indexOf(v2.get('role_name'));
return v1o < v2o ? -1 : 1;;
}
}]);
console.log(store.data);
您可以在此处看到它:http://jsfiddle.net/lontivero/wGc2D/4/
祝你好运!答案 1 :(得分:1)
这在文档中介绍,使用自定义排序类型:
http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Field-cfg-sortType
// current sort after sort we want
// +-+------+ +-+------+
// |1|First | |1|First |
// |2|Last | |3|Second|
// |3|Second| |2|Last |
// +-+------+ +-+------+
sortType: function(value) {
switch (value.toLowerCase()) // native toLowerCase():
{
case 'first': return 1;
case 'second': return 2;
default: return 3;
}
}