过滤后在数组上应用map函数

时间:2013-03-22 09:59:56

标签: javascript html map filter angularjs

在我的html(.ng-template)中,我有一个数组,在其上应用了一个过滤器。我想将map函数应用于此滤镜函数的结果(在应用滤镜之前将它应用于整个数组太昂贵了)。 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()"'>

我不明白如何将地图功能应用于此。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

模板很难测试,不在模板中编写任何业务逻辑,此外,这些函数将创建数组的新副本,并在每个{{1}每次应用地图函数阶段。

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

ngRepeat

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

您也可以在控制器中订购数组。