angular $filter を構成/操作して、データを徐々に渡すことができるようにする方法はありますか?
現在、ユーザーが指定した文字列を分割して、データに対して複数のシーケンシャル ファイラーを実行しようとしています。したがって、次のようなデータがある場合: [{name:foo, city:bar},...x250] その時点から検索ボックスに「パリ」と入力できます。パリの場所でのみ反復する必要があります。 Hotel 、次に Hilton と入力します....問題は、フィルターがデータセット全体で毎回実行されることです...角度でフィルターを順番に実行する方法を知っている人はいますか?
アップデート...
http://jsfiddle.net/Bretto/ZM4Qa/12/
.filter('searchFilter', function ($filter) {
return function (array, q) {
console.log('data-entry: ', array.length);
var filter = $filter('filter');
var lookFor = function (word, data, cb) {
var dataRes = filter(data, word);
cb(dataRes);
}
var search = function (index, words, data, cb) {
var word = words[index];
lookFor(word, data, function (dataRes) {
console.log('data-current: ', dataRes.length);
if (index < words.length - 1) {
index += 1;
search(index, words, dataRes, cb);
} else {
cb(dataRes);
}
});
}
if (q && q.text) {
var words = q.text.split(' ');
var index = 0;
if(array){
//console.log(array.length);
}
search(index, words, array, function (dataRes) {
array = dataRes;
});
}
return array;
}
}))
したがって、これは、以前のフィルター処理された結果を徐々に反復するフィルターを作成しようとする試みです (入力にスペースで区切られた複数の単語を入力します...) 問題は、フィルターが常にデータ全体から開始されることです。
これは今より明確ですか?