Я знаю, что название немного сбивает с толку, но я приложил все усилия, чтобы описать его в предложении. Я хочу использовать угловое изменение нг в выбранных полях, созданных с помощью 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[]
на выбор, но все же не повезло. Пожалуйста помоги. Благодарю.
Я бы избегал смешивания 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; ?>
Ваша проблема связана с тем, что вы используете 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 для второго и т. д.