6

私はアイテムの配列を持っていますitems

nアイテムをグループ化するために、ng-repeat ディレクティブまたは類似のものを使用したいと思います。例えば:

items=['a', 'b', 'c', 'd', 'e', 'f', 'g']次のようにレンダリングされるように、3つのグループでレンダリングしたいと思います。

<div class="row">
   <div class="col-sm-4">a</div>
   <div class="col-sm-4">b</div>
   <div class="col-sm-4">c</div>
</div>
<div class="row">
   <div class="col-sm-4">d</div>
   <div class="col-sm-4">e</div>
   <div class="col-sm-4">f</div>
</div>
<div class="row">
   <div class="col-sm-4">g</div>
</div>

私は何らかの処理を行うことができることを知っていますが、anuglarjs がこれを回避するためのサポートを持っているかどうか疑問に思っていましたitemsitems=[['a', 'b', 'c'], ['d', 'e', 'f'], ['g']]そうですか?そうでない場合、どのようにこれを行うつもりですか?

前もって感謝します。

4

3 に答える 3

1

私の知る限り、角度にはグループ化ディレクティブはありません。

解決策は、データをグループ化し (underscore.js がこれに適しています)、ビューに ng-repeat をネストすることです。

于 2013-10-10T07:49:58.783 に答える
0

独自のフィルターを定義できます。

app.filter('inGroupsOf', function() {
  var memoized = {};

  return function() {
    key = Array.prototype.slice.call(arguments);
    if (typeof memoized[key] === "undefined") {
      memoized[key] = _inGroupsOf.apply(this, arguments);
    }

    return memoized[key];
  };

  function _inGroupsOf(collection, group_size) {
    var ar = [];
    var i, j;

    for (i = 0, j = -1; i < collection.length; i++) {
      if (i % group_size == 0) {
        j++;
        ar[j] = [];
      }

      ar[j].push(collection[i]);
    }

    return ar;
  }
});

メモ化を使用して防止しますError: 10 $digest() iterations reached. Aborting!

于 2016-05-23T17:08:04.660 に答える