1

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;
}

}))

したがって、これは、以前のフィルター処理された結果を徐々に反復するフィルターを作成しようとする試みです (入力にスペースで区切られた複数の単語を入力します...) 問題は、フィルターが常にデータ全体から開始されることです。

これは今より明確ですか?

4

1 に答える 1

0

すべてを微調整する必要がないように、複数のフィルターを使用してください。この例を出発点として取り上げてください。

http://jsfiddle.net/ed9A2/1/

<tr ng-repeat="player in playersFound = (players | filter:{id: player_id, name:player_name, age:player_age})">
于 2013-09-04T10:29:07.813 に答える