カスタム アルゴリズムを使用して Ext ストアをフィルター処理したいと考えています。JSON/AJAX プロキシは 100 を超えるレコードを返します。いくつかの基準に基づいて、その数を上位 5 位まで減らす必要があります。
これにどう対処するか(アルゴリズムではなく、どこでトリガーするか)?
私の現在のアプローチは、そのようなカスタムリーダーを使用することです
Ext.define('MyReader', {
extend : 'Ext.data.reader.Json',
alias : 'reader.myReader',
getResponseData : function(response) {
var data = this.callParent([response]);
// algorithm
return filteredData;
}
});
Ext.define('SunApp.store.Stations', {
extend: 'Ext.data.Store',
requires: ['MyReader'],
config: {
model: 'SunApp.model.Station',
autoLoad: true,
proxy: {
type: 'ajax',
url: 'data.json',
reader: {
type: 'myReader'
}
}
}
});
しかし、生の JSON データではなく、ストア モデルに基づいてアルゴリズムを作成したいと考えています。したがって、データがストアにロードされている間/後にフィルタリングしたいと思います。リスト ビューが表示されると、ストアが Ext によって暗黙的に作成されることに注意してください。
Ext.define('SunApp.view.Stations', {
extend: 'Ext.List',
xtype: 'stations',
config: {
title: 'Stations',
store: 'Stations',
...
したがって、リストに渡される前に手動で呼び出す関数をストアに追加することはできません。