2015-02-12 6 views
0

У меня есть массив, который я показываю с помощью ngRepeat, и у меня есть форма внизу, которая позволяет добавлять к указанному массиву. Это используется для работы в предыдущей версии углового; То, как элементы отслеживаются в ngRepeat, изменились в более ранних версиях угловых, поэтому я еще не уверен, если это большой, но когда я нажимаю элемент в массив, все элементы, похоже, привязаны к одной и той же модели.Добавление элементов в массив, кажется, прерывается ngRepeat

Это, как я добавить элемент:

var vm = this; 

this.items = []; 

this.addItem = function(item) { 
    vm.items.push(item); 
} 

и I цикл над ними, как это:

<ul> 
    <li ng-repeat="item in main.items track by $index">{{item.id}} - {{item.value}}</li> 
</ul> 
<hr> 
<input ng-model="main.newItem.id" type="text" placeholder="id"> 
<input ng-model="main.newItem.value" type="text" placeholder="value"> 
<button ng-click="main.addItem(main.newItem)">Add Item</button> 

Вот plnkr демонстрирует проблему.

+1

Это нормально: 'newItem' всегда тот же объект. Просто скопируйте его в функцию 'addItem', например, с помощью' vm.items.push (angular.copy (item)); ' – Blackhole

+0

Да, это решает. thanks – Genu

+0

Вы когда-нибудь объявляли newItem внутри своего контроллера? Вы ссылаетесь на main.newItem, но я не вижу его объявленным. – Justin

ответ

0

Ответ пользователем Blackhole

Нужно сделать копию этого пункта, прежде чем добавить его в массив

vm.items.push(angular.copy(item)); 
Смежные вопросы