【问题标题】:Mustache.js: Iterate over a list received via json [duplicate]Mustache.js:遍历通过 json 接收到的列表 [重复]
【发布时间】:2012-08-09 20:04:42
【问题描述】:

可能重复:
Mustache JS Template with JSON Collection

我有一个像这样的 json 响应,我想与 Mustache.js 一起使用:

[
    {"id": "1", "details": {"name": "X", "type":"Y" }},
    {"id": "2", "details": {"name": "aName", "type":"something" }}
]

如何使用 mustache.js 对其进行迭代?

【问题讨论】:

  • 我看不出它是如何复制的。链接问题的标题都不是描述性的,也没有可接受的答案。
  • 有趣的是,这是“重复”的帖子引用了这个问题。

标签: mustache


【解决方案1】:

数组本身应该是一个更大的对象中的一个值,像这样:

var obj = {
  arr: [
    {"id": "1", "details": {"name": "X", "type":"Y" }},
    {"id": "2", "details": {"name": "aName", "type":"something" }}
  ]
}

那么你可以这样做:

{{#arr}}
   my id: {{id}}
{{/arr}}

{{#bla}} 的使用实际上是重载的。当它作用的属性是一个数组时,它将循环。当属性是对象本身时,它将“进入”该对象。给出你的例子:

{{#arr}}
   my id: {{id}} <br/>
   {{#details}}
     and my name: {{name}}
   {{/details}}
{{/arr}}

【讨论】:

  • 感谢您的回答。我还找到了另一种方法,您也可能会发现它更容易。请看下文。
  • @Geert-Jan 谢谢它帮助了我。我必须这样做:$('.some #selector').append(Mustache.render(someTemplateTpl, {arrayOfObjects: classObject.arrayOfJsons})); 所以类 classObject 内名为 arrayOfJsons 的对象数组必须作为 arrayOfObjects 属性内的值分配目的。但早些时候,当我使用此代码时:$('.some #selector').append(Mustache.render(someTemplateTpl, classObject.arrayOfJsons)); 它不起作用,模板已部分呈现 - 只有静态 html 部分,但基于 Json 属性的动态部分(即 if-else like 语句)没有。为什么?
【解决方案2】:

我发现了另一种方法,它与 Geert-Jan 非常相似,只是您不必将数组分配给 Javascript 对象。

{{ #. }}
   <p> {{ id }} </p>
   <ul> {{#details}}
        {{name }}
        {{ type }}
   {{/details}}
   </ul>
{{ /. }}

【讨论】:

  • 确实如此。不知道点也适用于顶级对象。
  • 我似乎无法使用 I Can Haz 让它工作。有什么我想念的吗?
  • 我似乎无法让它工作(我正在使用 I Can Haz)。有什么我想念的吗,因为这太棒了!
  • 第一个 {{/.}} 必须是 {{#.}}
  • 我无法让它工作,你们建议的任何其他迭代器
猜你喜欢
  • 1970-01-01
  • 2016-10-24
  • 2021-12-15
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多