Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
嵌套ng repeat中的Angularjs表单字段_Angularjs_Nested_Angularjs Ng Repeat - Fatal编程技术网

嵌套ng repeat中的Angularjs表单字段

嵌套ng repeat中的Angularjs表单字段,angularjs,nested,angularjs-ng-repeat,Angularjs,Nested,Angularjs Ng Repeat,嗨,我有这样的嵌套表单字段 <table> <tbody ng-repeat="student in students"> <tr> <td colspan="3">{{student.sname}}</td> </tr> <tr> <td>Subject</td> <td>External Mark</td>

嗨,我有这样的嵌套表单字段

<table>

  <tbody ng-repeat="student in students">    
   <tr>
    <td colspan="3">{{student.sname}}</td>
  </tr>
  <tr>
    <td>Subject</td>
    <td>External Mark</td>
    <td>Internal Mark</td>
  </tr>

  <tr ng-repeat="subject in exam_subjects">
    <td>{{subject.subject_name}}</td>
    <td><input ng-model="subject.student.external_mark"></td>
    <td><input ng-model="subject.student.internal_mark"></td>
  </tr>

 </tbody>

</table>

{{student.sname}
主题
外部标记
内标
{{subject.subject_name}
这是为了给学生提供科目的考试分数。它显示得很好,但当我给一个主题加上标记时,该主题的所有外部标记/内部标记字段都填充了相同的值。我该怎么处理?
感谢您的帮助和建议

表单中的输入需要唯一名称

<tr ng-repeat="subject in exam_subjects">
    <td>{{subject.subject_name}}</td>
    <td><input name="external_{{$index}}" ng-model="subject.student.external_mark"></td>
    <td><input name="internal_{{$index}}" ng-model="subject.student.internal_mark"></td>
  </tr>

{{subject.subject_name}

我们的想法是用唯一的范围变量映射每个学生的学科分数。为每个学生保存一组外部和内部标记。 我让你们的学生反对类似的观点:

$scope.students=[{
    "sname": "abc",
    "marks": []
}];

$scope.exam_subjects=[{
     "id": "1",
     "subject_name": "Physics"  
     },
     {
     "id": "2",
     "subject_name": "Maths"
     }];
在你看来:

<tr ng-repeat="subject in exam_subjects">
<td>{{subject.subject_name}}</td>
<td><input ng-model="student.marks[{{subject.id-1}}].external_mark"></td>
<td><input ng-model="student.marks[{{subject.id-1}}].internal_mark"></td>
</tr>

{{subject.subject_name}

代码没有经过测试。这只是给你一个如何解决这个问题的想法。

答案2。 现在我知道你在做什么了(从你最初的帖子来看这很难),我向你推荐这样的东西

<tr ng-repeat-start="subject in exam_subjects">
...
<td><button ng-click=onEdit(subject)></button></td>
</tr>
<tr ng-repeat-end="" ng-if="vm.selectedSubject.Id===subject.Id">
<td colspan="">
  //your form that you bind to selectedSubject. add submit and Cancel button. 
</td>
</tr>
注意仅当您为单个受试者提供专用的PUT/PATCH功能时,该功能才起作用

考试科目应该是一个数组。在控制器中作为$scope.test\u科目。 按“编辑”时,请执行以下操作

<tr ng-repeat-start="subject in exam_subjects">
...
<td><button ng-click=onEdit(subject)></button></td>
</tr>
<tr ng-repeat-end="" ng-if="vm.selectedSubject.Id===subject.Id">
<td colspan="">
  //your form that you bind to selectedSubject. add submit and Cancel button. 
</td>
</tr>

是的,确切地说输入需要是唯一的,但我们如何使其唯一我认为name=“external{{{$index}}”不起作用我们必须使模型唯一,而不是name,但我个人试图避免这种提交给服务器的行为。如果您有很多行,而服务器由于某种原因无法处理这些行,则需要将错误映射到每一行。理论上,你可能会在页面上看到很多错误信息,只是让最终用户感到困惑/害怕。你能不能只显示数据并在每一行上添加一个编辑链接/按钮来打开编辑表单?我不认为给出一个唯一的id就能解决这个问题。使用唯一的
范围
变量绑定每一行是不正确的required@AvantikaSaini是的,关于用唯一的作用域变量绑定每一行有什么建议?@Jens Alenius实际上我为每个学生提供了展开/折叠函数,唯一的表单提交了一个复选框或单选按钮,并在此基础上执行任何操作。