【问题标题】:ng-repeat (iterate) over complex json object in Angularng-repeat(迭代)在Angular中的复杂json对象上
【发布时间】:2015-06-19 18:06:08
【问题描述】:

一个控制器返回给我一个非常复杂的 json 对象:

{
"184": {
    "title": "THE STONE ROSES",
    "sessions": {
        "1443564000000": {
            "num": 5
        },
        "1442959200000": {
            "num": 1
        },
        "1447196400000": {
            "num": 1
        },
        "1444428000000": {
            "num": 2
        },
        "1446332400000": {
            "num": 3
        }
    }
}

}

我试图像这样在我的视图上迭代它

<div class="large-6 columns" ng-repeat="item in showItems" st-raw>
    <h1>{{item.sessions}}</h1>
 </div> 

如果对象打印在 html 响应上,则使用此代码我会得到一部分:

{"1443564000000":{"num":1}}

但是正如你所看到的,sessions有一个非常复杂的属性(我用session的id来存储它的个数)

我已经看到有些人曾经使用 ng-repeat-start 来做到这一点,在我的情况下使用它会给我带来几个错误..

【问题讨论】:

  • showItems 是一个对象而不是一个数组,你为什么要对其进行迭代?
  • 因为我需要在我的视图中显示这种结果:1443564000000 - 1 1444428000000 -3

标签: javascript json angularjs ng-repeat


【解决方案1】:

假设您要遍历 sessions 属性,它不是数组而是对象,您将不得不遍历对象的属性:

&lt;tr ng-repeat="(key, value) in data"&gt;

这里是一个例子:http://plnkr.co/edit/7AQF6k7hf2aZbWFmhVoX?p=preview

示例出处的相关 SO 问题:How can I iterate over the keys, value in ng-repeat in angular

【讨论】:

  • 是的!这几乎可以工作......除了如果我像这样迭代我会得到整个会话对象......有没有办法对这个对象进行字符串化? &lt;div ng-repeat="(key, value) in cartItems"&gt; &lt;h1&gt;{{key}} {{value.sessions}}&lt;/h1&gt; &lt;/div&gt;
  • 对不起,我不明白你的问题。您是否尝试遍历 cartItem and 会话?如果您可以发布代码示例(jsbin),那将会很有帮助!
  • 我会试着解释一下,我会在小提琴上重现代码但没有真实数据只是为了看看我在做什么。我正在尝试做的是一种购物车:每次单击项目的日期会话时,您都必须将会话时间和选择此日期会话的次数添加到购物车中。我所做的是为事件创建一个特定对象,然后在其上推送不同的属性以存储会话:jsfiddle.net/dph4fg66/16
  • 您可以使用 $q 轻松地以角度模拟数据,或者只是放弃异步调用。我为简单的模拟创建了一个模板;尝试在这里重现您的问题:jsbin.com/zuzoxeciba/1/edit?html,js,output
  • 另一种方法是将元素推送到数组中:jsfiddle.net/dph4fg66/17 但每次点击时计数器都会初始化
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
  • 2015-04-01
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多