0

在我的 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()"'>

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

4

1 回答 1

1

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

您应该在控制器中执行此操作并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>

您还可以在控制器中订购阵列。

于 2013-03-22T10:06:17.287 回答