1

反復処理が必要なキー/値を含むオブジェクトを返しています。私はこのようにやっています:

ng-repeat="(index, thing) in data"

とてもシンプルですが、2つのアイテムに制限する必要があります。通常の limitTo Angular フィルターはこのようには機能しないようです。ビューでこのようにフィルタリングすることは可能ですか? または、ビューに到達する前にデータを変更する必要がありますか? たとえば、私はこれを行うことができるようにしたいと思います:

ng-repeat="(index, thing) in data | limitTo:2"
4

4 に答える 4

4

limitObjecTo最初の 2 つのプロパティのみを持つオブジェクトを返すことができるような独自のフィルターを作成できます。

配列を使用していない理由はありますか? これにははるかに適しているようです。

例: http://jsfiddle.net/LgTfs/

.filter('limitObjectTo', function() {
  return function(obj, limit) {
    var newObj = {}, i = 0, p;
    for (p in obj) {
      newObj[p] = obj[p];
      if (++i === limit) break;
    }
    return newObj;
  };
});
于 2013-10-16T16:23:55.833 に答える
1

あなたの解決策をありがとう@Langdon!FROM と TO を制限するために、いくつかの改善を行いました。

.filter('limitObjectFromTo', function() {
      return function(obj, limitFrom, limitTo) {
         var newObj = {},
          i = 0;
          for (var p in obj) {
            if (i >= limitFrom) newObj[p] = obj[p];
            if (++i === limitTo) break;
          }
        return newObj;
      };
  });

多分誰かがそれを使用するでしょう:-)次に、追加するだけです:| limitObjectFromTo: 2:62から6までに制限します。

于 2014-04-03T08:42:02.610 に答える
0

以下のようにキーをフィルタリングするため$indexに と組み合わせて使用​​することができましたng-if

   fruVeg = {
                'a' : 'apple',
                'b' : 'banana',
                'c' : 'carrot',
                'd' : 'fandelion',
                'e' : 'eggs',
                'f': 'fig'
            };

私のテンプレートでは、 funcs オブジェクトの上位 4 つのキーに制限するためにこれを行いました

<label ng-repeat='(key,val) in fruVeg' ng-if="$index<4"> [[key]]</label>
于 2015-11-11T15:42:45.583 に答える