使用limitto过滤角度对象中的数字

时间:2017-01-14 02:08:17

标签: javascript angularjs angularjs-limitto array.prototype.map

我在重复的项目数组上使用angularjs过滤器方法,并尝试使用limitTo过滤器过滤数字。结果未应用于DOM中的重复。

这是html

<div ng-controller="demo as d">
      <input type="text" ng-model="d.test" ng-change="d.filterthis(d.test)"><br>
      <div ng-repeat="item in d.items | limitTo:d.limitto  track by $index">
            <span ng-show="!item.show">{{item.myno}}</span> - 
            <span ng-show="!item.show">{{$index}} - {{item.mystr}}</span><br>
      </div>
</div>

App.js过滤函数with angularjs

this.filterthis = function(filter){
    that.items.map(function(filter){

            return function(obj){
                obj.show=true;
                if(obj.myno.toString().indexOf(filter) >-1){
                    console.log(obj);
                    obj.show=false;
                }
                return obj;
            }
    }(filter));
};

Items是这样的数组

this.items = [{
        show:false,
        myno:10,
        mystr:"test1"
    }];

http://plnkr.co/edit/bTdlTpSeZuPyGpolXLEG

1 个答案:

答案 0 :(得分:1)

将“显示”作为您商品的关键字,不会将其从ng-repeat中移除,因此limitTo过滤器仍会返回商品。相反,您应该像重复一样利用filter过滤器

<input type="text" ng-model="d.search"><br>
<div ng-repeat="item in d.items | filter:{myno:d.search} | limitTo:d.limitto track by $index">
    <span>{{item.myno}}</span> - 
    <span>{{$index}} - {{item.mystr}}</span><br>
</div>

请注意,此处的顺序非常重要,如果您limitTo然后filter,您只会过滤限制结果。您可以通过将{myno:d.search}更改为其他键来更改过滤的键,或者如果您要搜索整个对象,只需使用d.search

<强> Updated Plunker