Bagaimana saya bisa menggunakan ng-repeat like for di Javascript?
contoh:
<div ng-repeat="4">Text</div>
Saya ingin mengulang dengan ng-repeat 4 kali tapi bagaimana caranya?
Bagaimana saya bisa menggunakan ng-repeat like for di Javascript?
contoh:
<div ng-repeat="4">Text</div>
Saya ingin mengulang dengan ng-repeat 4 kali tapi bagaimana caranya?
items
..?
Jawaban:
Angular dilengkapi dengan limitTo: filter batas, ini mendukung pembatasan item x pertama dan item x terakhir:
<div ng-repeat="item in items|limitTo:4">{{item}}</div>
items
Ini adalah solusi paling sederhana yang dapat saya pikirkan.
<span ng-repeat="n in [].constructor(5) track by $index">
{{$index}}
</span>
Berikut contoh Plunker.
Error: [$parse:isecfld]
Anda dapat menggunakan metode slice pada objek array javascript
<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>
Pendek dan manis
item in items|limitTo:4
di html:
<div ng-repeat="t in getTimes(4)">text</div>
dan di pengontrol:
$scope.getTimes=function(n){
return new Array(n);
};
http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj
EDIT:
dengan angularjs> 1.2.x
<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>
t in [1,2,3,4]
atau t in 'aaaa'
dll :)
[1,2,3,4]
.. Solusi yang menyedihkan yang satu ini
Jawaban yang diberikan oleh @mpm tidak berfungsi, itu memberikan kesalahan
Duplikat di repeater tidak diperbolehkan. Gunakan ekspresi 'track by' untuk menentukan kunci unik. Repeater: {0}, Kunci duplikat: {1}
Untuk menghindari ini bersama
ng-repeat = "t di getTimes (4)"
menggunakan
melacak dengan $ index
seperti ini
<div ng-repeat = "t di getTimes (4) track oleh $ index"> TEXT </div>
Untuk mengulang 7 kali, cobalah untuk menggunakan sebuah array dengan panjang = 7 , maka melacak itu oleh $ index :
<span ng-repeat="a in (((b=[]).length=7)&&b) track by $index" ng-bind="$index + 1 + ', '"></span>
b=[]
buat Array kosong «b»,
.length=7
atur ukurannya ke «7»,
&&b
biarkan Array «b» baru tersedia untuk ng-repeat, di
track by $index
mana «$ index» adalah posisi iterasi.
ng-bind="$index + 1"
tampilan mulai dari 1.
Untuk mengulang X kali:
hanya mengganti 7 dengan X .
Semua jawaban di sini tampaknya mengasumsikan bahwa item adalah sebuah larik. Namun, di AngularJS, itu mungkin juga menjadi objek. Dalam kasus tersebut, pemfilteran dengan limitTo maupun array.slice tidak akan berfungsi. Sebagai salah satu solusi yang mungkin, Anda dapat mengonversi objek Anda menjadi larik, jika Anda tidak keberatan kehilangan kunci objek. Berikut adalah contoh filter untuk melakukan hal itu:
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;
}
};
});
Setelah itu adalah sebuah array, gunakan slice atau limitTo, seperti yang dinyatakan dalam jawaban lain.