【问题标题】:Applying map function on an array after filter过滤后在数组上应用映射函数
【发布时间】:2013-03-22 18:06:17
【问题描述】:

在我的 html (.ng-template) 中,我有一个数组,在该数组上应用了过滤器。我想将映射函数应用于此过滤器函数的结果(在应用过滤器之前将其应用于整个数组太昂贵了)。 angularjs 的旧版本允许我这样做

<ng-repeat = 'item in array.$filter(filterFunc).map(mapFunc).$orderBy("orderFunc()")'>

但使用新语法 (v 1.0.5) 我无法做到这一点。

<ng-repeat = 'item in array|filter:filterFunc|orderBy:"orderFunc()"'>

我不明白如何将地图功能应用于此。有没有办法做到这一点?

【问题讨论】:

    标签: javascript html map filter angularjs


    【解决方案1】:

    模板很难测试,不要在模板中编写任何业务逻辑,此外,这些函数会在每个$digest 阶段每次创建一个新的数组副本并应用映射函数.

    您应该在控制器中执行此操作并在其中使用 ngRepeat

    function MyCtrl ($scope, $filter) {
      var fullArray = [1,2,3];
      var otherArray = $filter(filterFunc).map(mapFunc);
    }
    

    .

    <div ng-repeat="item in otherArray | orderBy:orderFn"></div>
    

    您也可以在控制器中对数组进行排序。

    【讨论】:

    • 奇怪的是,我有相同的解决方案,实际上我试图在模板中移动该逻辑.....我这个昏昏欲睡的白痴!
    猜你喜欢
    • 2019-04-17
    • 2021-05-16
    • 1970-01-01
    • 2020-03-17
    • 2020-11-23
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多