1

有没有办法配置/使用角度 $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 回答