Я хотел бы повторно использовать сортировщики хранилища для создания функции сравнения для сортировки массива. Вот код, я упростил:Использование Ext.util.Sortable для сортировки массива
// Data to sort
var data = [
{rank: 2, name: 'Zebra'},
{rank: 2, name: 'Aardvark'},
{rank: 1, name: 'Lion'}
];
// Sort by rank, then by name, case-insensitive
var sorters = [
{property: 'rank'},
{property: 'name', transform: function(x) {return x.toLowerCase();}}
];
// Will need this
var util = Ext.create('Ext.util.Sortable');
// Normalize the sorters
var decoded = util.decodeSorters(sorters);
// Create a comparator
var comparator = util.createComparator(decoded);
// Sort the data using the comparator
// *** fails here in ExtJS 5 ***
Ext.Array.sort(data, comparator);
// Output
Ext.Msg.alert('Success', JSON.stringify(data));
Где он терпит неудачу, он говорит this.sorterFn is not a function
глубоко внутри нескольких слоев сортировки соответствующих функций. Подтвержденные выше работы отлично в ExtJS 6.
Понадобилось много времени, чтобы добраться до этого момента, поэтому, прежде чем я получу слишком много на нижних уровнях, есть ли более простой способ сделать это? То есть повторное использование sorters
, предназначенное для хранилища данных, для сортировки data
?
Или, возможно, есть патч, который я могу применить?