У меня проблема с динамическим добавлением элементов в массив, который служит моделью для ng-repeat.
Плункер находится здесь: http://plnkr.co/edit/W4b34EDR8dP7ems7aFRV?p=preview
У меня есть список строк таблицы. В каждой строке находится поле выбора, содержимое которого одинаково для каждой строки. Ng-модель для выбора - это просто строка, которая действует как элемент в первом ng-повторе (сложнее объяснить, чем просто посмотреть на plunker!)
Моя проблема заключается в том, когда я нажимаю кнопку, чтобы добавить строку. Следуй этим шагам:
Добавлена новая строка, но выбор будет удален из третьей строки. Почему это происходит и как я могу избежать этого? Конечно, я пытался Google, но трудно найти слова для google.
Вот какой код:
<tr ng-repeat="phase in phases track by $index">
<td>{{$index + 1}}</td>
<td><select ng-model='phase'>
<option ng-repeat="item in availablePhases" ng-value="item">{{item}}</option>
</select>
</td>
</tr>
И контроллер:
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
$scope.phases = ['Phase 1', 'Phase 2'];
$scope.availablePhases = ['Phase 0', 'Phase 1', 'Phase 2', 'Phase 3'];
$scope.add = function() {
$scope.phases.push('');
}
});
Благодарю!
Вы даете все значения той же model
, поэтому, обновляя их, вы обновили их все. Я не уверен, почему это не изменило первые два. Чтобы заставить его работать, просто измените
<select ng-model='phase'>
в
<select ng-model='phases[$index]'>