I'm trying to sort a store by two fields, but only the first sort works.
Store is loaded in controller. The data is requested but only first sort is applied.
Code:
Ext.define('Events', {
extend: 'Ext.data.Store',
config: {
model: 'Event',
storeId: 'events',
sorters: [
{
property: 'timestamp',
direction: 'ASC'
},
{
property: 'title',
direction: 'ASC'
}
]
}
});
Code:
Ext.define('Event', {
extend: 'Ext.data.Model',
config: {
idProperty: 'id',
fields: [
{name: 'id', type: 'int'},
{name: 'title', type: 'string'},
{name: 'description', type: 'string'},
{name: 'image', type: 'string'},
{name: 'url', type: 'string'},
{name: 'category'},
{name: 'tags'},
{name: 'timestamp'}
]
}
});
Only sort by the first sorter.
I tryed this another code in store on sorters field
Code:
sorters: [
{
sorterFn: function (event1, event2) {
console.log('sorter 1');
var data1 = event1.get('datetime').valueOf().toString(),
data2 = event2.get('datetime').valueOf().toString();
return data1.localeCompare(data2);
},
direction: 'ASC'
},
{
sorterFn: function (event1, event2) {
console.log('sorter 2');
var title1 = event1.get('title'),
title2 = event2.get('title');
return title1.localeCompare(title2);
},
direction: 'ASC'
}
]
And on the console only print severals 'sorter 1' and no one 'sorter 2'.
How I can sort by multiple fields?
This don't work too
Code:
var store = Ext.getStore('events');
store.sort([ {
sorterFn: function (event1, event2) {
console.log('sorter 1');
var data1 = event1.get('datetime').valueOf().toString(),
data2 = event2.get('datetime').valueOf().toString();
return data1.localeCompare(data2);
},
direction: 'ASC'
},
{
sorterFn: function (event1, event2) {
console.log('sorter 2');
var title1 = event1.get('title'),
title2 = event2.get('title');
return title1.localeCompare(title2);
},
direction: 'ASC'
}
]);