Дополнительно
Как сделать ng-repeat определенное количество раз вместо повторения по массиву?
Есть ли способ ng-повторять определенное количество раз вместо того, чтобы постоянно выполнять итерации по массиву?
Например, ниже я хочу, чтобы элемент списка отображался 5 раз, предполагая, что $scope.number
равно 5, а также увеличивая число, чтобы каждый элемент списка увеличивался как 1, 2, 3, 4, 5
Желаемый результат:
<ul>
<li><span>1</span></li>
<li><span>2</span></li>
<li><span>3</span></li>
<li><span>4</span></li>
<li><span>5</span></li>
</ul>
414
20
В настоящее время
ng-repeat
принимает в качестве параметра только коллекцию, но вы можете сделать это:И где-нибудь в вашем контроллере:
Это позволит вам изменить
$scope.number
на любое число по вашему желанию и сохранить привязку, которую вы ищете.[Здесь приведен пример][1] с парой списков, использующих ту же функцию
getNumber
.РЕДАКТИРОВАНИЕ 1/6/2014: В новых версиях Angular 1.x используется следующий синтаксис:
РЕДАКТИРОВАНИЕ 9/25/2018: Более новые версии Angular 1.x позволяют делать это без функции. Если ваш код прост и вам не нужна функция
getNumber
по другим причинам, вы можете опустить ее и просто сделать это:Заслуга @Nikhil Nambiar из его ответа ниже за это обновление
вы можете сделать это:
Вот пример того, как это можно сделать. Обратите внимание, что меня вдохновил комментарий в документации по ng-repeat: http://jsfiddle.net/digitalzebra/wnWY6/.
Обратите внимание на директиву ng-repeat:
Вот контроллер:
Я думаю, что этот [jsFiddle][1] из этой темы может быть тем, что вы'ищете.
Более простой подход (пример 5 раз):
Я столкнулся с той же проблемой. Я наткнулся на эту ветку, но ничего'т, как методы, которые они провели здесь. Мое решение было использовать underscore.js, который мы уже установили. Это's, как просто, как это:
Это будет делать именно то, что вы'вновь ищу.
Я хотел, чтобы мои HTML-очень минимальный, поэтому определен небольшой фильтр, который создает массив [0,1,2,...], как это сделали другие:
После этого, на экране можно использовать такой:
Это действительно некрасиво, но это работает без контроллера либо целое число или переменную:
целое число:
переменной:
Есть много способов сделать это. Я был действительно обеспокоен, что логика в моем контроллере, так что я создал простую директиву, чтобы решить проблемы повторения элемента N-раз.
Установка:
Эта директива может быть установлена с помощью установки беседки угловые-повторяю-Н
Пример:
Это лишь небольшое изменение принято отвечать, но вы Don't действительно нужно создать новые функция. Только для импорта 'время' по объему:
в
См. [эта скрипка][1] на живом примере.
Простой ответ: 2 строки кода
ПЛ (в ваш контроллер в AngularJS)
В формате HTML
...где значением repeatcount-это количество повторов, которые должны появиться в этом месте.
угловые дает очень сладкая функция называется фрагмент.. с помощью этого вы можете достичь того, чего вы ищете. например, НГ-повторите="по АБ в ABC.(параметр startindex,endindex включительно) на" среза;
это демо :http://jsfiddle.net/sahilosheal/LurcV/39 не будет Вам помочь и рассказать вам, как использовать этот "и делает жизнь легким" и функция. :)
HTML-код:
Усс:
НГ-Яш:
Вот ответ для угловых 1.2.х
По сути, это те же, с небольшими изменениями в `НГ-повторите
вот скрипку: http://jsfiddle.net/cHQLH/153/
это происходит потому, что угловой 1.2 не'т разрешить повторяющиеся значения в директиве. Это означает, что если вы пытаетесь сделать следующее, Вы получите сообщение об ошибке.
Вы можете использовать НГ-если директива с НГ-повторите
Поэтому, если чис-число раз вам нужен элемент повторяется:
Расширение немного о Иван's первый ответ немного, вы можете использовать строку в качестве коллекции без следа заявление так долго, как персонажи по-своему уникальны, так что если использовать-дело меньше чем на 10 чисел, как этот вопрос я бы просто сделать:
Который немного jenky, конечно, но достаточно просто посмотреть и не особенно смущают.
Вы можете использовать этот пример.
Внутри контроллера:
Пример для выберите элемент в представлении HTML код:
Для пользователей с помощью CoffeeScript, вы можете использовать понимание диапазона:
Директивы
или контроллер
Шаблон
Во-первых, создать угловой фильтр, используя Лодашь:
Функция Лодашь раз способен обрабатывать значение null, неопределено, 0, цифры и строковое представление чисел.
Затем, использовать его в html, как это:
или
Если N не слишком высокие, другим вариантом может быть использование сплит('') с строку из n символов :
Угловые предоставляет фильтры, чтобы изменить коллекцию. В этом случае коллекция будет нуль, т. е. [], и фильтр также принимает аргументов, следующим образом:
ДШ:
Этот метод очень похож на те, предложенной выше, и это'т всегда выше, но показывает силу фильтров на AngularJS.