Angular предоставляет некоторую поддержку цикла for, использующего числа в своих директивах HTML:
<div data-ng-repeat="i in [1,2,3,4,5]">
do something
</div>
Но если ваша переменная области действия содержит диапазон с динамическим номером, вам нужно будет каждый раз создавать пустой массив.
В контроллере
var range = [];
for(var i=0;i<total;i++) {
range.push(i);
}
$scope.range = range;
В HTML
<div data-ng-repeat="i in range">
do something
</div>
Это работает, но это не нужно, так как мы не будем использовать массив диапазона в цикле. Кто-нибудь знает о настройке диапазона или регулятора для минимального / максимального значения?
Что-то вроде:
<div data-ng-repeat="i in 1 .. 100">
do something
</div>
Ответы:
Я немного подправил этот ответ и придумал эту скрипку .
Фильтр определяется как:
С повторением используется так:
источник
Я придумал еще более простую версию для создания диапазона между двумя определенными числами, например. С 5 до 15
Посмотреть демо на JSFiddle
HTML :
Контроллер :
источник
var a; void 0 === a
«по-настоящему» не определено.Ничего, кроме простого Javascript (вам даже не нужен контроллер):
Очень полезно при макете
источник
Referencing "constructor" field in Angular expressions is disallowed! Expression: [].constructor(10)
. Возможно, это работало в предыдущей версии Angular, или я делаю что-то не так.[].slice.constructor
, который дает доступFunction
, следовательно, к оценке кода).Я придумал немного другой синтаксис, который мне подходит немного больше и добавляет необязательную нижнюю границу:
который вы можете использовать как
или
источник
$digest
итерации при использовании значения в области, то естьng-repeat="n in [1, maxValue] | makeRange"
:?Для новичков в angularjs. Индекс можно получить с помощью $ index.
Например:
Что будет, когда вы используете удобный фильтр Gloopy, напечатайте:
сделать что-нибудь номер 0
сделать что-то номер 1
сделать что-то номер 2
сделать что-то номер 3
сделать что-то номер 4
сделать что-то номер 5
сделать что-то номер 6
сделать что-то номер 7
сделать что-то номер 8
сделать что-то номер 9
источник
do something number {{n}}
тоже будет достаточно.Короткий способ сделать это - использовать метод _.range () Underscore.js. :)
http://underscorejs.org/#range
источник
Я использую мою пользовательскую
ng-repeat-range
директиву:и HTML-код
или просто
или даже просто
или просто
источник
element.attr('ng-repeat', 'n in [' + rangeString + ']');
не работает ...Простейшим решением для кода не было инициировать массив с диапазоном и использовать $ index +, сколько бы я не хотел компенсировать:
источник
Определение метода
Приведенный ниже код определяет метод,
range()
доступный для всей области вашего приложенияMyApp
. Его поведение очень похоже наrange()
метод Python .использование
С одним параметром:
0, 1, 2,
С двумя параметрами:
1, 2, 3, 4,
С тремя параметрами:
-2, -1.5, -1, -0.5, 0, 0.5,
источник
Вы можете использовать фильтры «после» или «до» в модуле angular.filter ( https://github.com/a8m/angular-filter )
HTML:
результат: 5, 6, 7, 8, 9, 10
источник
Без каких-либо изменений в вашем контроллере вы можете использовать это:
Наслаждайтесь!
источник
Кратчайший ответ: 2 строки кода
JS (в вашем контроллере AngularJS)
HTML
... где
myCount
количество звезд, которые должны появиться в этом месте.Вы можете использовать
$index
для любых операций отслеживания. Например, если вы хотите напечатать некоторую мутацию в индексе, вы можете поместить следующее вdiv
:источник
Использование UnderscoreJS:
Применение этого к
$rootScope
делает его доступным везде:источник
Очень простой:
источник
Привет, вы можете добиться этого, используя чистый HTML, используя AngularJS (Директива не требуется!)
источник
Установить область действия в контроллере
Установить повтор в файле шаблона HTML
источник
Улучшение решения @ Mormegil
использование
3 2 1 0 -1 -2 -3
-3 -2 -1 0 1 2 3
0 1 2 3
0 -1 -2 -3
источник
Я попробовал следующее, и это работало очень хорошо для меня:
Угловой 1.3.6
источник
Поздно на вечеринку. Но в итоге я просто сделал это:
В вашем контроллере:
Html:
источник
Это улучшенный ответ jzm (я не могу комментировать, иначе я бы прокомментировал ее / его ответ, потому что он / она включил ошибки). Функция имеет начальное / конечное значение диапазона, поэтому она более гибкая и ... работает. Этот конкретный случай для дня месяца:
источник
Я взбил это и понял, что это может быть полезно для некоторых. (Да, CoffeeScript. Подайте в суд.)
директива
Использовать:
HTML
Может ли это быть проще?
Я настороженно отношусь к фильтрам, потому что Angular любит переоценивать их без всякой уважительной причины, и это огромное препятствие, если у вас их тысячи, как и у меня.
Эта директива будет даже следить за изменениями в вашей модели и соответствующим образом обновлять элемент.
источник
Если вы хотите добиться этого в HTML без какого-либо контроллера или фабрики.
источник
Пусть
$scope.refernceurl
это массив тогдаисточник
Это самый простой вариант: просто используйте массив целых чисел ....
источник