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

これに map 関数を適用する方法がわかりません。これを達成する方法はありますか?

4

1 に答える 1

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>

コントローラでアレイを注文することもできます。

于 2013-03-22T10:06:17.287 に答える