选择ng-change导致所有选择字段自动更改

时间:2017-09-19 13:29:26

标签: javascript php angularjs codeigniter angular-ngmodel

我知道标题有点令人困惑,但我已尽力用句子来形容它。我想在使用CodeIgniter构建的选择字段中使用角度ng-change。这些选择是从数组生成的。一切都没问题,除非这些选择在我更改其中一个时自动为所有选择字段选择相同的值。

<?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; ?>

因此,当我通过在第一个选择字段中选择Nina来更改选择时,所有选择字段会自动选择选项Nina。

更新: 在控制器中:

    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]);
      }
   }

有了这个,当我在控制台中检查它时,我什么都没有。

我尝试在select上添加属性name=id[],但仍然没有运气。请帮忙。谢谢。

2 个答案:

答案 0 :(得分:2)

我会避免将php次观点与AngularJS混合在一起,但由于你无法改变,你可以尝试制作你的模型索引(因为我在评论中提到过,这里的问题是对所有ngModel使用相同的select elements。这样的事情可以奏效:

<?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; ?>

答案 1 :(得分:1)

您的问题是由于您为每个formData.id使用ng-model。因此,ng-model将更新为“1”(Nina),并且使用formData.id的所有选择元素也将更改为“1”(Nina)。

<?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将具有第一个select的值,formData [1] .id为第二个,等等。