【问题标题】:custom filter in ng-repeat with a function具有功能的 ng-repeat 中的自定义过滤器
【发布时间】:2017-03-21 10:51:13
【问题描述】:

我以 4:9 的方式从 json 中获取秒数(当然如果秒数

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

但它甚至没有达到过滤功能。

【问题讨论】:

  • 语法错误? ng-repeat="tracks in recentTracks" | filter:secondsCheck 应该是 ng-repeat="tracks in recentTracks | filter:secondsCheck"
  • 'recentTracks' 的值是多少

标签: angularjs filter angularjs-ng-repeat


【解决方案1】:

要使用自定义过滤器,请在过滤器表达式中指定过滤器的名称,而不是 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] &lt; 10,但items 中的值不是数字,所以它总是false。希望一旦您到达执行过滤器的地步,您就可以解决这个问题。

【讨论】:

    猜你喜欢
    • 2015-02-24
    • 1970-01-01
    • 2020-06-18
    • 2013-05-09
    • 1970-01-01
    • 2017-02-08
    • 2012-08-15
    • 1970-01-01
    • 2014-08-19
    相关资源
    最近更新 更多