1

我有一个输入字段的表,我在ng-repeat的每次迭代设置值为ng-model。我在每次迭代中都得到了正确的值,但所有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; 
}; 

这是我收到(截图): This is What I'm getting (screenshot)

331是最后一次迭代的结果。它覆盖了以前的值。

+0

它应该有不同的模型。像这样'ng-model =“item.da”' –

+0

@Hadi你能解释一下吗?我是一个小菜 –

+0

请分享'Allsubjects'对象 –

回答

0

是的,预期行为迭代的最后一个值将被分配到“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阵列的每个对象(把你所使用的名字),所以它有一定的价值相应的它的对象。

0

我认为你的问题的来源是你的对象定义。

尝试创建自己的对象这样

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

等...它应该给你一个不同的ng-model每个元素。但是如果你能分享你的对象,找到实际的错误会更有帮助。

0
<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; 
};