ng-model 在 ng-repeat 中被覆盖

ng-model overwritten within ng-repeat

我有一个带有输入字段的 table,我在 ng-repeat 的每次迭代中将值设置为 ng-model。我在每次迭代中得到正确的值,但所有 ng-model 值都被迭代的最后一个值覆盖。我该如何解决这个问题?

查看

<tr ng-repeat="student in students_list">
        <td>{{student.Rollnumber}}</td>
        <td>{{student.Name}}</td>
        <td ng-repeat="item in Allsubjects" >      
            <input   type="text" class="form-control" ng-model="da" 
                  ng-init="alert(student.Id)">
        </td>
</tr>

控制器

$scope.alert = function(id)
{
    $scope.da =id;
};

这就是我得到的(屏幕截图):

331 是上次迭代的结果。它正在覆盖以前的值。

我认为您问题的根源在于您的对象定义。

尝试像这样创建对象

$scope.student_list = [
  student1 = {
    Rollnumber : 9999,
    Name : "Foo", 
    sub1 : 0 
  }
]

等... 它应该为每个元素提供不同的 ng-model。但是如果您可以共享您的对象,那么找到实际错误会更有帮助。

<tr ng-repeat="student in students_list">
        <td>{{student.Rollnumber}}</td>
        <td>{{student.Name}}</td>
        <td ng-repeat="item in Allsubjects" >      
            <input   type="text" class="form-control" ng-model="da"+item 
                  ng-init="alert(student.Id,)">
        </td>
</tr>

这里我们给模型(即物品)添加动态值,现在它不会覆盖模型值,您可以通过您定义的函数轻松获取它:

$scope.alert = function(id,item)
{
    $scope.da+item = id;
};

是的,将迭代的最后一个值分配给 "da"

是预期的行为

您可以通过

解决此问题
<tr ng-repeat="student in students_list">
        <td>{{student.Rollnumber}}</td>
        <td>{{student.Name}}</td>
        <td ng-repeat="item in Allsubjects" >      
            <input   type="text" class="form-control" ng-model="student['da']" 
                  ng-init="alert(student)">
        </td>
</tr> 

和警报功能

$scope.alert = function(student)
{
    student["da"] = student.id;
};

在这里,我们只是为 student_list 数组中的每个学生对象创建一个名为 "da"(取你使用的名字)的新 属性,因此它将具有相应的值它是对象。