【问题标题】:How to use Mustache.js if the JSON object is in a nested array?如果 JSON 对象在嵌套数组中,如何使用 Mustache.js?
【发布时间】:2011-07-27 20:59:13
【问题描述】:

我听说了关于 Mustache 的精彩内容,并决定试一试。

我想弄清楚如何在 jQuery 中使用 Mustache 模板。我已经找了几天了。

小胡子可以在这里找到:https://github.com/janl/mustache.js/

这是我的尝试:

$.getJSON('get_fullname.asp', {name: 'johnny'}, function(data, status, xhr) {

    var template = '<h1>{{NAME}}</h1><p>test</p>';
    strHTML = Mustache.to_html(template, data);
    $('#container').html( strHTML );

});

我的 JSON 数据返回 [{"NAME":"John","MIDDLE":"A","LAST":"Smith"}]

我得到的只是&lt;p&gt;test&lt;/p&gt;

我也尝试过使用这个模板,但仍然得到&lt;p&gt;test&lt;/p&gt;

var template = '{{#NAME}}<h1>.</h1>{{/NAME}}<p>test</p>';

我错过了什么?

【问题讨论】:

    标签: javascript jquery templates mustache


    【解决方案1】:

    乍一看,您的 JSON 对象似乎嵌套在一个数组中。删除它周围的[],然后看看它是否有效。您可以在服务器级别(我推荐)或在 javascript 中调用:

    strHTML = Mustache.to_html(template, data[0]);
    

    代替:

    strHTML = Mustache.to_html(template, data);
    

    【讨论】:

    • 嗨,Gazler,是的,这行得通!不推荐嵌套 JSON 对象吗?
    • 嵌套对象不是问题。你的嵌套在一个数组中,这就是你的例子不起作用的原因。如果您确实希望嵌套数组(列表)或对象,请查看 github.com/janl/mustache.js 文档中的“取消引用部分”部分。
    • 谢谢!我已经在这里待了 2 天!
    • 我的json是coldfusion生成的。我试图删除 cf 中的外括号但没有成功,所以我最终在 js 中使用了 data[0]。谢谢@Gazler
    • @Gazler 你也可以通过var str = Mustache.to_html(template, data.pop()); 获得更优雅的解决方案:)
    【解决方案2】:

    作为一种好的做法,如果您不打印数组,则服务器不应从您的请求中返回该数组。

    即使它被序列化为 JSON,要获得此结果,源结构也必须是对象数组或(如在 PHP 中)关联数组的数组。

    如果您真正想要的是打印名称列表,您应该在“.”上进行迭代。就像这个小提琴:http://jsfiddle.net/viniciuspires/3e5cs/

    {{#.}}
    <li>{{last}}, {{name}}.</li>
    {{/.}}
    

    仅对一个名称产生相同的结果,但会随着名称的增加而扩展列表。

    【讨论】:

      猜你喜欢
      • 2019-08-15
      • 2019-08-01
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 2021-08-25
      • 2018-04-05
      • 2018-11-27
      • 2019-03-06
      相关资源
      最近更新 更多