使用函数在ng-repeat中自定义过滤器

时间:2017-03-21 10:51:13

标签: angularjs filter angularjs-ng-repeat

我以第二次这样的方式从json获得4:9(如果秒数<10) 而不是4:09我试图制作自定义过滤器

     <a ng-repeat="tracks in recentTracks" | filter:secondsCheck>

         <p>{{tracks.Song}}</p>
         <p>{{tracks.Artist}}</p>
         <p>{{tracks.Album}}</p>
         <p>{{tracks.Length.Minutes + ":" + tracks.Length.Seconds}} </p>
      </a>

这是过滤器

app.filter('secondsCheck', function () {
return function (items) {
    var filtered = [];
    for (var i = 0; i < items.length; i++) {
        var item = items[i];
        if (items[i] < 10) {
            console.log("filter");
            filtered.push(0 + item);
        }
    } return filtered;
};
});

但它甚至无法达到过滤功能。

1 个答案:

答案 0 :(得分:0)

要使用自定义过滤器,请在过滤器表达式中指定过滤器的名称,而不是filter:filterName

此外,您过早关闭ng-repeat属性。

修正:

<a ng-repeat="tracks in recentTracks | secondsCheck">
    <p>{{tracks.Song}}</p>
    <p>{{tracks.Artist}}</p>
    <p>{{tracks.Album}}</p>
    <p>{{tracks.Length.Minutes + ":" + tracks.Length.Seconds}} </p>
</a>

看起来过滤器的实现也存在问题。您有items[i] < 10,但items中的值不是数字,因此始终为false。希望你一旦达到执行过滤器的程度就可以对其进行排序。