当前位置: 首页 > 知识库问答 >
问题:

如何使用ng-repeat循环访问JSON中的数组数组?

凌华奥
2023-03-14

我正在尝试迭代一个JSON对象userTypes
对于下面的代码:

在第一个ng-repeat中:< br > < code > { { user . type } } outputs ' Parent '(如预期一样),< br > < code > { { user . options } } outputs '[{ " option 1 ":" 11 qwert "," option2":"22QWERT"}]'(如预期一样)。< br >

但是在第二个ng-repeat中,我无法循环访问user.options并输出每个{{options}}

应该更改什么才能将option1option2作为第2个ng-重复中的输出?

JS 代码段

var userTypes = [{
    "type": 'Parent',
    "options": [{
        "option1": "11QWERT",
        "option2": "22QWERT"
    }]
}]

超文本标记语言片段

<li ng-repeat="user in userTypes">
    <p>{{user.type}}</p>
    <p>{{user.options}}</p>
    <li ng-repeat="option in user.options">
        <p>
            {{option}}
        </p>
    </li>
</li>

共有3个答案

胡厉刚
2023-03-14

因为是用户。选项是一个数组,您应该再次循环它。通过这样做,您将获得一个对象,通过该对象,您可以轻松访问选项1和选项2。

请参考工作柱塞:

http://embed.plnkr.co/5c3i5fY50jLP0fFgxkUX/preview

如果您有任何疑问,请查看代码。

希望这有帮助

牟波
2023-03-14

对于这个精确的JSON输入,应该是这样的:

<li ng-repeat="option in user.options">
    <p>
        {{option.option1}}
        {{option.option2}}
    </p>
</li>

但是,正如您所说,您想要非固定数量的选项,请将您的JSON更新为这样:

"options":["11QWERT","22QWERT"]

然后你的代码应该按照你的要求工作。

您可以将每个新元素添加到列表中,并在前面加上简单的coma。

柯曦
2023-03-14

替换您的孩子<code>

<li ng-repeat="user in userTypes">
    <p>{{user.type}}</p>
    <ul ng-repeat="(key, value) in user.options[0]">
        <p>{{key}}: {{value}}</p>
    </ul>
</li>

或者,如果<code>选项

<li ng-repeat="user in userTypes">
    <p>{{user.type}}</p>
    <ul ng-repeat="option in user.options">
        <li ng-repeat="(key, value) in option">{{key}}: {{value}}</li>
    </ul>
</li>

如果不需要对象键:

<ul ng-repeat="option in user.options">
    <li ng-repeat="item in option">{{item}}</li>
</ul>

小提琴

扩展解释:

在您的示例中,您有< code >

<li ng-repeat="user in userTypes">
    <li ng-repeat="option in user.options">
    </li>
</li>

由于它不是有效的超文本标记语言,浏览器将此标记解释为以下内容:

<li ng-repeat="user in userTypes">
</li>
<li ng-repeat="option in user.options">
</li>

由于< code>ng-repeat为每次迭代创建了新的作用域,因此您无法在第二个< code>ng-repeat中访问< code>user变量,迭代器也不会运行。

 类似资料:
  • 问题内容: 我可以仅在AngularJs中使用一个数组同时遍历两个数组吗?如果是这样,那又如何? 例如我有两个数组 它应该能够为两个数组产生相同的索引。 问题答案: 如果要使用第一个数组的索引访问第二个数组,请尝试以下操作: 看到这个小提琴:http : //jsfiddle.net/dm9zhgx9/

  • 问题内容: 无论如何,有没有一项要计数,然后在循环之外显示呢? 我曾经尝试过没有成功,因为我认为每次都压倒一切。 无论如何,在我的控制器中未执行任何功能就可以做到这一点吗? 问题答案: 在ng-repeat中初始化的代码将具有不同的作用域,并且无法在循环外部访问。 试试这个:

  • 我有一个名为的数组。它包含一系列对象,每个对象都包含一个名为的属性。我想在数组中的每个对象上重复该数组的内容。 如果我重复通过它在单个数组上运行良好。 但是,我想继续重复,就像这样: 等等。 我的(不正确)解决方案当前看起来如下: 在这种情况下,我假设$index将代表递增的整数,但它不起作用。有人能帮忙吗? 提前感谢...

  • Angularjs ng用div标记重复。。我有一个带有div标记的代码,如图所示。。我想重复整个div,在第二个循环中img src是不同的。。如何使用angularjs中的ng repeat指令执行此操作?

  • 问题内容: 我的控制器从服务器上抓人: 我的模板每行需要显示三个人。例如,如果它是一个表: 我不确定如何有条件地应用最佳实践的时间或最佳实践。我知道如何通过向控制器添加分组逻辑来做到这一点,但我认为最好将设计逻辑排除在控制器之外。 问题答案: 经过多年的经验积累,很显然,最好的方法是在控制器中将数组拆分为多个块。每次修改原始数组时,都要更新分块数组。

  • 我有一个动态JSON,其中包含名称列表,它还包含子名称作为子集。如何使用angularJS ng重复在超文本标记语言UI中显示它 示例动态JSON是 注意:JSON是基于请求生成的。子数组是可选的,它可以包含长度“n”