javascript - 如何使用 ng-repeat 迭代使用动态键关联的数组

标签 javascript angularjs json angularjs-directive angularjs-ng-repeat

我正在尝试使用 ng-repeat 迭代对象数组,并使用每个对象 ID 查找绑定(bind)到 list 模型的数据。 我正在处理的项目中有以下 javascript 对象:

{
diagnosis: {
            mainfractures: [
                        {
                            id: "metacarpal",
                            textinput_id: "metacarpal_text",
                            title: "5th Metacarpal",
                        },
                        {
                            id: "proximal_phalanx",
                            textinput_id: "proximal_phalanx_text",
                            title: "Proximal Phalanx",
                        },
                        {
                            id: "middle_phalanx",
                            textinput_id: "middle_phalanx_text",
                            title: "Middle Phalanx",
                        },
                        {
                            id: "distal_phalanx",
                            textinput_id: "distal_phalanx_text",
                            title: "Distal Phalanx",
                        },
                        {
                            id: "scaphoid_fracture",
                            textinput_id: "scaphoid_fracture_text",
                            title: "Scaphoid Fracture",
                        }
          ]
   }}

这是我的 list 模型。当用户选择一个复选框时,一个值将绑定(bind)到与该断裂关联的数组。

$scope.checklists = {
                    "diagnosis": {
                         metacarpal: [],
                         proximal_phalanx: [],
                         middle_phalanx: [],
                         distal_phalanx: [],
                         scaphoid_fracture: []
                    }
                }

Checklist Image Example

一旦用户做出与上图类似的选择,掌骨的 list 模型应如下所示:掌骨:[“head”]

我想要做的是通过fraction.id 在bulletpoint 中列出每个用户的选择。我试图用这段代码来完成它,但到目前为止它只列出了断裂标题。尝试将fraction.id插入ng-repeat是否有问题?

<div ng-repeat="fracture in diagnosis.mainfractures">
          <div > <!--ng-if="checklists['diagnosis'][fracture.id] > 0"-->
            <h4>{{ fracture.title }}</h4>
            <div class="row">
              <ul type="disc">
                <li ng-repeat="selection in checklists['diagnosis'][fracture.id]">
                  &bull; {{ capitalize(selection) }}
                </li>
              </ul>
            </div>
        </div>
      </div>

最佳答案

根据您提供的代码,我不得不说您的问题实际上是由于 JS 语法错误造成的。每个对象项后面都缺少逗号,并且这里有一个随机双引号 scaphoid_fracture"[]

$scope.checklists = {
                "diagnosis": {
                     metacarpal: []
                     proximal_phalanx: []
                     middle_phalanx: []
                     distal_phalanx: []
                     scaphoid_fracture"[]
                }
            }

这是一个完全可用的jsfiddle

关于javascript - 如何使用 ng-repeat 迭代使用动态键关联的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46117957/

相关文章:

json - 使用 jq 从 json 流中进行第一次匹配

javascript shift() 奇怪的递归与返回

angularjs - 返回带有markdown格式的API响应的设计不好吗?

javascript - 在 AngularJS 指令中调用传入的函数

ruby - 如何从 JSON 响应中提取值?

json - "Failed to invoke public scala.collection.immutable.List() with no args"使用 GSON

javascript - 如何仅在使用 javascript 的列表中不存在对象时才添加对象?

javascript - elasticitY(true) with range 图表不适应新范围

javascript - 如何计算实际的 innerWidth/innerHeight?

javascript - TypeScript: TypeError: 无法读取未定义的属性 'push'