循环JSON哈希/字典

时间:2017-07-14 01:24:48

标签: jsrender

有一个issue opened a few years ago on JsRender允许循环对象而不仅仅是数组。其中一个有助于重新解决问题的例子是this

{
    joe:{
        name:  'Joe',
        status: 'out'},
    jane:{
        name: 'Jane',
        status:'in'},
    jill:{
        name:'Jill',
        status:'away'}
}

最终,该功能已实施,但我发现的所有示例都没有解决这一特定问题,它始终是数据的一部分,as in the examples given at the end of the issue thread,通常看起来像是这样的for的文档:

[
  {
    "name": "Pete",
    "address": {
      "city": "Seattle"
    }
  },
  {
    "name": "Heidi",
    "address": {
      "city": "Sidney"
    }
  }
]

如何使用forprops迭代词典 ,如上所述? (一个对象数组)无论我尝试什么,我都会收到错误:

  

...期待的表达,得到了':'

或者任何适合我尝试的排列:

{{for :data}}
{{for :#data}}
{{for :}}

等。根据我的经验,在JSON文件中遇到带有这样的索引的词典是非常正常的,所以我很惊讶没有找到任何示例。

非常感谢任何帮助或见解。

我没有使用JsViews,只有JsRender v0.9.87。

1 个答案:

答案 0 :(得分:0)

这里有几个{{props}}的例子:

http://www.jsviews.com/#propstag

在示例中,您有{{props address}} - 但如果要迭代顶级对象,则可以使用{{props #data}}{{props}}(因为要迭代的对象) over是当前的数据上下文...)。

语法{{for :#data}}不正确(不确定来自哪里)。 正如错误消息所示,那里不应该有冒号。如果您想迭代当前数据,它将是{{for #data}}{{for}}

(BTW还有一个{{jsonview}}标签,它也可以与JsRender一起使用,不仅适用于JsViews。http://www.jsviews.com/#samples/tag-controls/jsonview。不确定它是否与你的场景相关。它实际上是一个样本显示{{props}}在当前数据上运行,但有数据绑定。另请参阅http://www.jsviews.com/#jsvpropstag@jsonview

这是new sample(jsfiddle),它采用http://www.jsviews.com/#samples/editable/tags示例并用电影哈希替换电影数组。您可以看到使用{{props}}来迭代顶级字典。我稍后会将样本添加到jsviews.com ......