2015-07-30 2 views
1

Есть ли более элегантный способ сделать это?Связывание ng-repeat с пустым массивом

<input type="text" id="items" ng-model="items[0]" placeholder="item1"> 
<input type="text" id="items" ng-model="items[1]" placeholder="item2"> 
<input type="text" id="items" ng-model="items[2]" placeholder="item3"> 
<input type="text" id="items" ng-model="items[3]" placeholder="item4"> 
<input type="text" id="items" ng-model="items[4]" placeholder="item5"> 

Я хочу использовать ng-repeat, но нет никаких пунктов, чтобы через перебор, потому что items пуст сначала.

+0

Почему вы хотите, чтобы увидеть их, если они пустые? Может быть, немного больше контекста было бы хорошо. – ajmajmajma

+2

Вы должны инициализировать элементы [] в своем контроллере или директиве. Затем вы можете ng-повторить его. – hgoebl

+0

вы можете создать массив с 5 позициями, но вам нужно поставить дорожку по индексу $ index, чтобы позволить повторить работу –

ответ

2

Вы можете использовать трек по $ индекса перечислить нулевой заполненный массив:

см в jsbin

<div ng-repeat="item in c.list track by $index"> 
    <input type="text" id="items" ng-model="c.list[$index]" placeholder="item{{$index + 1}}"> 
</div> 
6

ng-repeat не будет проходить через пустой массив. Вы можете попробовать элементы настроек массива из 5 пустых объектов, а затем обновить объекты позже.

3

Вы можете установить элементы в контроллере, как следующее:

$scope.items = [null, null, null, null, null]; 

При этом вы будете иметь массив для перебора.

0

Или вы можете фактически инициализировать его по-другому в своем контроллере с помощью нового ключевого слова.

$scope.items = new Array(5); 
Смежные вопросы