Ext.data.proxy.Memory.read使用Ext.util.Filter.createFilterFn:だから
// Filter the resulting array of records
if (filters && filters.length) {
// Total will be updated by setting records
resultSet.setRecords(records = Ext.Array.filter(records, Ext.util.Filter.createFilterFn(filters)));
resultSet.setTotal(records.length);
}
、あなたは異なるフィルタロジックを使用したい場合は、することができます、アイデアのための
Ext.define('MyApp.extensions.FilterMemoryProxy', {
extend: 'Ext.data.proxy.Memory',
alias: 'proxy.filtermemory',
createCustomFilterFn: function (filters)
{
if (!filters) {
return Ext.returnTrue;
}
return function (candidate)
{
var items = filters.isCollection ? filters.items : filters,
length = items.length,
i, filter;
for (i = 0; i < length; i++) {
filter = items[i];
if (!filter.getDisabled() && candidate.get(filter.getProperty()).toLowerCase().indexOf(
filter.getValue().toLowerCase()) !== -1) {
return true;
}
}
return false;
};
},
read: function (operation)
{
...
if (operation.process(resultSet, null, null, false) !== false) {
// Filter the resulting array of records
if (filters && filters.length) {
// Total will be updated by setting records
resultSet.setRecords(records = Ext.Array.filter(records, me.createCustomFilterFn(filters)));
resultSet.setTotal(records.length);
}
...
}
}
});
おかげで、私は多くのデータを持っていると私は〜それはパフォーマンス(多分イム間違っている、イリノイチェック)影響を与える可能性が倍増することを考える:memroyプロキシ読みメソッドをオーバーライドして、カスタム関数を使用してフィルタ機能を作成しますだから私は別の解決策を見つけようとします。他の選択肢はありませんが、プロキシを無効にして2番目のストアを使用するように見えます。 –
はい、それは理想的ではありません。データの大部分については、カスタムプロキシの作成をお勧めします。 – MarthyM