88

Javascriptでng-repeat like forを使用するにはどうすればよいですか?

例:

<div ng-repeat="4">Text</div>

ng-repeat を 4 回繰り返したいのですが、どうすればいいですか?

4

7 に答える 7

343

Angular には limitTo:limit フィルターが付属しており、最初の x 個のアイテムと最後の x 個のアイテムの制限をサポートしています。

<div ng-repeat="item in items|limitTo:4">{{item}}</div>
于 2013-07-19T00:08:11.887 に答える
50

javascript配列オブジェクトでスライスメソッドを使用できます

<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>

ショート&スウィート

于 2013-02-22T12:52:58.237 に答える
39

html で:

<div ng-repeat="t in getTimes(4)">text</div>

そしてコントローラーで:

$scope.getTimes=function(n){
     return new Array(n);
};

http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj

編集 :

angularjs > 1.2.x を使用

<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>
于 2013-01-07T14:41:14.383 に答える
3

ここでのすべての回答は、アイテムが配列であることを前提としているようです。ただし、AngularJS では、オブジェクトである可能性もあります。その場合、limitTo や array.slice によるフィルタリングは機能しません。考えられる解決策の 1 つとして、オブジェクト キーを失っても構わない場合は、オブジェクトを配列に変換できます。これを行うフィルターの例を次に示します。

myFilter.filter('obj2arr', function() {
    return function(obj) {
        if (typeof obj === 'object') {
            var arr = [], i = 0, key;
            for( key in obj ) {
                arr[i] = obj[key];
                i++;
            }
            return arr;
        }
        else {
            return obj;
        }

    };
});

配列になったら、他の回答に記載されているように、スライスまたは limitTo を使用します。

于 2013-12-06T11:25:09.600 に答える