javascript - 使用嵌套 ng-repeat 和动态 ng-model 作为对象

标签 javascript html angularjs-scope angularjs-ng-repeat

好吧,让我说实话,因为我是 Angular 初学者,我不知道如何提出这个问题,我会尽力解释这个问题。

图1: enter image description here

正如您在上图中看到的,我有一个类列表,每个类下面没有任何部分。您可以在每行上看到一个蓝色按钮,单击该按钮我需要知道选择了哪个“部分”。

这是问题陈述。

现在这是我的 HTML

<table class="table table-hover">
  <tbody>
    <tr>
      <th>Syllabus</th>
      <th>{{phrase.className}}</th>
      <th>Select Section</th>
      <th>{{phrase.Operations}}</th>
    </tr>
    <tr ng-repeat="class in classes| filter:searchText">
      <td id="syl">
        <span ng-repeat="(sid, syllabi)  in syllabus" ng-if="sid == class.classAcademicYear">
            {{ syllabi.yearTitle}}
        </span>
      </td>
      <td id="cls">{{class.className}}</td>
      <td id="sec">
        <div class="form-group">
          <select class="form-control" name="student_section" ng-model="selectedSection">
             <option ng-selected='class.sections[$index].id' ng-repeat="(key, section) in class.sections" value="{{section.id}}">{{section.sectionName}}</option>
          </select>
        </div>
      </td>
      <td id="vew">
        <button ng-click="edit(class.id)" type="button" class="btn btn-info btn-flat" title="{{phrase.ReadSchedule}}" tooltip><i class="fa fa-fw fa-th-list"></i></button>
      </td>
    </tr>
    <tr ng-show="!classes.length">
      <td class="noTableData" colspan="3">{{phrase.NoClasses}}</td>
    </tr>
  </tbody>
</table>

这里我们看到一个 nseted ng-repeat,其中我根据类列表创建表行,现在这个类对象还保存了内部的section对象,正如你可以看到内部ng-repeat使用classes.sections来迭代选项

现在classes json对象如下所示

[{
  "id": 11,
  "className": "Class-1 (STATE)",
  "classAcademicYear": 2,
  "classSubjects": "[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\"]",
  "dormitoryId": null,
  "sections": [{
    "id": 11,
    "sectionName": "Section -1 (STATE)",
    "sectionTitle": "section title -1",
    "classId": 11,
    "teacherId": "[\"10\",\"11\",\"12\",\"13\",\"14\",\"15\"]"
  }]
}, {
  "id": 12,
  "className": "Class-2",
  "classAcademicYear": 2,
  "classSubjects": "[\"0\"]",
  "dormitoryId": null,
  "sections": [{
    "id": 12,
    "sectionName": "Section -1",
    "sectionTitle": "section title -1",
    "classId": 12,
    "teacherId": "[\"0\"]"
  }]
}, {
  "id": 13,
  "className": "Class-3",
  "classAcademicYear": 2,
  "classSubjects": "[\"0\"]",
  "dormitoryId": null,
  "sections": [{
    "id": 13,
    "sectionName": "Section -1",
    "sectionTitle": "section title -1",
    "classId": 13,
    "teacherId": "[\"0\"]"
  }]
}, {
  "id": 14,
  "className": "Class-4",
  "classAcademicYear": 2,
  "classSubjects": "[\"0\"]",
  "dormitoryId": null,
  "sections": [{
    "id": 14,
    "sectionName": "Section -1",
    "sectionTitle": "section title -1",
    "classId": 14,
    "teacherId": "[\"0\"]"
  }]
}]

我想做的是为动态的内部选择下拉元素设置一个 ng-model ,如下所示,这样每次选择该部分时,我都可以将蓝色按钮操作设置为任何部分 id。

ng-model="selectedSection[class.id]"

这不起作用。

我知道这可能不是足够的信息,但如果有人有兴趣帮助我解决这个问题,我可以分享更多详细信息。

最佳答案

要检查选择了哪个 ng-repeat 行,您应该发送值 $index 和 $parent.$index (如果您有嵌套的 ng-repeat)。

<button ng-click="edit($index, $parent.$index)" type="button">

有帮助吗?

关于javascript - 使用嵌套 ng-repeat 和动态 ng-model 作为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43546442/

相关文章:

javascript - AngularJS:从作用域调用 $watchGroup

javascript - 从指令更新指令上的 ngModel

javascript - 从 AngularJS 中的多个复选框获取值

javascript - 为什么 Angular 服务中的 setInterval 只触发一次?

javascript - HTML5 Canvas 圆显示滞后

html - 使用Safari时空白区域覆盖网页

设置为相对位置的 HTML 元素覆盖设置为固定的顶部导航栏

javascript - 初始化后如何按列对数据表进行分组

javascript - 切换两个隐藏单选按钮的最佳方法是什么?

jquery - 在选项下拉列表中添加背景图片