存储在煎茶触摸
自定义排序我有一个连接到第三方插件(Ext.ux.TouchGridPanel)商店+模型。插件使用相关映射正确调用商店的sort()方法。一切工作正常,商店自行分类。但是,我宁愿将商店分拣添加到商店。我曾尝试在我的模型中添加排序类型字段:存储在煎茶触摸
Ext.regModel("Transactions", {
fields: [
{
name: 'unit',
type: 'string',
sortType: function(value) {
console.log('PRINT GDAMNIT');
return 0;
}
},
...
]
});
但是,这不起作用,sortType未被调用。
TLDR:如何让自定义排序工作专卖店?
你试图做的可能会非常棘手。调用store.sort()
默认会删除所有现有的分拣机(根据Sencha Touch API documentation)。要保留现有的分拣机,您需要将分拣机添加到MixedCollection
store.sorters
。
其次,调用与自定义排序功能的排序方法,你需要(再次,见API了解详细信息)传递的property
特定sorterFn
不是到Sorter
- 但因为排序这有可能成为棘手呼叫从插件启动。
不知道这是否有助于解决您的问题,但也许它有助于你看看正确的方向。
您的商店将需要添加一个分拣机将排序在该领域之前,它会调用sortType功能。
var store = new Ext.data.Store({
model: 'Transactions',
sorters: [
{
property: 'unit',
direction: 'DESC'
}
]}
);
Sort type一个字段的值转换成另一个值,以确保正确排序。如果您没有在该字段上排序,那么没有理由调用该函数。您可以将sortDir添加到字段,该字段将根据字段的类型将字段按升序/降序排序。
一种解决方法可能是(我知道这听起来很低效,但我承担),一个额外的字段添加到您的模型实例(允许调用它的SortField),并使用你的排序功能。然后,您可以使用自定义排序算法遍历商店中的模型实例,并将排序值0,1,2,3,4,5等分配给sortField。然后在你的商店里,你可以添加'sorters: 'sortField'
......希望这会有所帮助,我目前正在经历类似的事情。
的定制SortType在煎茶触摸2工作。因此,按http://docs.sencha.com/touch/2-0/#!/api/Ext.data.SortTypes:
Ext.apply(Ext.data.SortTypes, {
asPerson: function(person){
// expects an object with a first and last name property
return person.lastName.toUpperCase() + person.firstName.toLowerCase();
}
});
Ext.define('Employee', {
extend: 'Ext.data.Model',
config: {
fields: [{
name: 'person',
sortType: 'asPerson'
}, {
name: 'salary',
type: 'float' // sortType set to asFloat
}]
}
});