2017-07-31 18 views
1

行にx回何も表示する必要がありますが、do(x times)はAngularではありません。また、コントローラで追加機能を使用しません。未定義配列の角度ng-repeat

?Array.from({length:5}) 
(5) [undefined, undefined, undefined, undefined, undefined] 

はそれが可能(すべてのコントローラを使用せずに)コントローラに追加機能やフィルタを追加することなく、次のコードを動作させるためですことを知って。

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"> 
 
</script> 
 

 
<div ng-app> 
 
    [1,2] - OK: 
 
    <div ng-repeat="x in [1,2]"> 
 
    > {{x}} 
 
    </div> 
 

 
    Array.from({length:5}) - NOK: 
 
    <div ng-repeat="x in Array.from({length:5})"> 
 
    > {{x}} 
 
    </div> 
 
</div>

PS

私は数字を表示したくない、私はちょうど5 >

PPSを表示する必要があります。

実用的な必要性:
私は「availableRowsNumber」と「itemsPerPage」を持って、ページ分割されたテーブルの最後のページを表示する必要があるので、私は、「標準の高さ」を表示するために、空の行を完了する必要があります。

<div ng-repeat="x in Array.from({length:itemsPerPage-itemsPerPage%availableRowsNumber})"> 
    <tr></tr> 
</div> 
+1

NG-IF = "$インデックス<5" –

+0

は、なぜあなたは、あなたのコントローラに機能を追加するために好きではないでしょうか?そして5を表示するだけでいいのなら、なぜng-repeatが必要なのでしょうか? – devqon

+0

@MikeFeltman私は最初の配列を持っていません。 – Serge

答えて

2

.constructor

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"> 
 
</script> 
 

 
<div ng-app> 
 
    <div ng-repeat="x in [].constructor(5) track by $index"> 
 
    <span>something that you want to display</span> 
 
    </div> 
 
</div>

+1

ニースはこのトリックを知らなかった – devqon

+0

良い解決策! 'track by'を使わないとうまくいきません! ... Array.from({length:5})が動作しない理由を説明していますか? – Serge

+0

Array.from()メソッドは、配列のようなオブジェクトまたは反復可能なオブジェクトから新しいArrayインスタンスを作成します。だから基本的にはそれを基礎にする何かが必要です。 – Vivz

0

あなたが使用できるマイクは言及していたようにNG-IF:

<div ng-repeat="item in items track by $index" ng-if="$index < 5"> 
</div> 

また、使用することができlimitTo:

0123あなたが使用することができます
+2

これはOPが求めるものではありません。問題は、事前に定義された配列を持たず、コントローラーやフィルターに触れることなく 'ng-repeat'をn回行う方法です。 – devqon