Як я можу використовувати нг-повторення , як для в JavaScript?
приклад:
<div ng-repeat="4">Text</div>
Я хочу повторити ng-repeat 4 рази, але як я можу це зробити?
Як я можу використовувати нг-повторення , як для в JavaScript?
приклад:
<div ng-repeat="4">Text</div>
Я хочу повторити ng-repeat 4 рази, але як я можу це зробити?
items..?
Відповіді:
Angular поставляється з фільтром limitTo: limit, він підтримує обмеження перших x елементів та останніх x елементів:
<div ng-repeat="item in items|limitTo:4">{{item}}</div>
items
Це найпростіший обхідний шлях, який я міг придумати.
<span ng-repeat="n in [].constructor(5) track by $index">
{{$index}}
</span>
Ось приклад Plunker.
Error: [$parse:isecfld]
Ви можете використовувати метод зрізу в об’єкті масиву javascript
<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>
Короткий російський солодкий
item in items|limitTo:4
в 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>
t in [1,2,3,4]або t in 'aaaa' тощо :)
[1,2,3,4].. Яке похмуре рішення
Відповідь, надана @mpm, не працює, вона дає помилку
Дублікати в ретрансляторі не допускаються. Використовуйте вираз "track by", щоб вказати унікальні ключі. Повторювач: {0}, повторюваний ключ: {1}
Щоб уникнути цього поряд з
ng-repeat = "t у getTimes (4)"
використання
відстежувати за $ індексом
подобається це
<div ng-repeat = "t in getTimes (4) track by $ index"> TEXT </div>
Щоб повторити 7 разів, спробуйте використати масив довжиною = 7 , а потім відстежте його за $ index :
<span ng-repeat="a in (((b=[]).length=7)&&b) track by $index" ng-bind="$index + 1 + ', '"></span>
b=[]створити порожній масив «b»,
.length=7встановити його розмір на «7»,
&&bнехай новий масив «b» буде доступний для ng-repeat,
track by $indexде «$ index» - це позиція ітерації.
ng-bind="$index + 1"дисплей починаючи з 1.
Повторити X раз:
просто замініть 7 на X .
Всі відповіді тут, здається, припускають, що елементи - це масив. Однак у AngularJS це також може бути об'єктом. У цьому випадку ні фільтрування за допомогою limitTo, ні array.slice не працюватимуть. Як одне з можливих рішень, ви можете перетворити свій об’єкт на масив, якщо не проти втратити ключі об’єкта. Ось приклад фільтра для цього:
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;
}
};
});
Коли це масив, використовуйте slice або limitTo, як зазначено в інших відповідях.