【问题标题】:Looping over JSON hash/dictionary循环遍历 JSON 哈希/字典
【发布时间】:2017-07-14 01:24:47
【问题描述】:

有一个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。

【问题讨论】:

    标签: jsrender


    【解决方案1】:

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

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

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

    {{for :#data}} 的语法不正确(不确定来自哪里)。 正如错误消息所说,那里不应该有冒号。如果您想遍历当前数据,则为 {{for #data}}{{for}}

    (顺便说一句,还有一个 {{jsonview}} 标记也可以与 JsRender 一起使用,不仅与 JsViews 一起使用。http://www.jsviews.com/#samples/tag-controls/jsonview。但不确定它是否与您的场景相关。它实际上是一个显示 @ 的示例987654333@ 在当前数据上运行,但使用数据绑定。另见 http://www.jsviews.com/#jsvpropstag@jsonview)

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

    【讨论】:

      猜你喜欢
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      相关资源
      最近更新 更多