javascript — Выбрать с помощью ng-change, автоматически изменяя все выбранные поля.

Я знаю, что название немного сбивает с толку, но я приложил все усилия, чтобы описать его в предложении. Я хочу использовать угловое изменение нг в выбранных полях, созданных с помощью CodeIgniter. Эти выборки генерируются из массива. Все в порядке, за исключением того, что эти выборки автоматически выбирают одно и то же значение для всех полей выбора, когда я изменяю одно из них.

<?php $i=1; foreach ($data as $d) : ?>
Username: <input type="text" value="<?php echo $d->username ?>" /><br/>
Person:
<select ng-model="formData[<?php echo $i ?>].id" ng-change="updateUser()">
<option value="1">Nina</option>
<option value="2">Naila</option>
<option value="3">Noni</option>
</select><br/>
<?php $i++; endforeach; ?>

Поэтому, когда я изменяю выбор, выбирая Нину в первом поле выбора, например, тогда все поля выбора автоматически выбирают опцию Нина.

ОБНОВИТЬ:
В контроллере:

    angular.module('myApp')
.controller('userCtrl', function($scope,$http){

$scope.formData = {};
$scope.updateUser = function(){
for (var i=1; i < $scope.formData.length; i++){
console.log($scope.formData[i]);
}
}

С этим я ничего не получил, когда я изучил это в консоли.

Я пытался добавить атрибут name=id[] на выбор, но все же не повезло. Пожалуйста помоги. Благодарю.

1

Решение

Я бы избегал смешивания php взгляды вместе с AngularJS, но поскольку вы не можете изменить это, вы можете попытаться сделать свой модельный индекс основанным (так как, как я уже упоминал в комментарии, проблема здесь заключается в использовании той же ngModel для всех select элементы). Нечто подобное может сработать:

<?php $index = 0; ?>
<?php foreach ($data as $d) : ?>
Username: <input type="text" value="<?php echo $d->username ?>"/><br/>
Person:
<select ng-model="formData[<?php echo $index ?>].id" ng-change="updateUser()">
<option value="1">Nina</option>
<option value="2">Naila</option>
<option value="3">Noni</option>
</select><br/>
<?php $index++; ?>
<?php endforeach; ?>
2

Другие решения

Ваша проблема связана с тем, что вы используете formData.id для каждого ng-model, Итак ng-model обновится до «1» (Нина) и все выбранные элементы, используя formData.id также изменится на «1» (Нина).

<?php $index = 0; ?>
<?php foreach ($data as $d) : ?>
Username: <input type="text" value="<?php echo $d->username ?>"/><br/>
Person:
<select ng-model="formData[<?php echo $index ?>].id" ng-change="updateUser()">
<option value="1">Nina</option>
<option value="2">Naila</option>
<option value="3">Noni</option>
</select><br/>
<?php $index++; ?>
<?php endforeach; ?>

В вашем контроллере инициализируйте массив formData: $scope.formData = [];
и тогда formData [0] .id будет иметь значение для первого выбора, formData [1] .id для второго и т. д.

1

По вопросам рекламы [email protected]