7

我听说了关于 Mustache 的美妙的事情,并决定试一试。

我想弄清楚如何将 Mustache 模板与 jQuery 一起使用。我已经找了几天了。

小胡子可以在这里找到: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"}]

我得到的只是<p>test</p>

我也尝试过使用这个模板,但仍然得到<p>test</p>.

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

我错过了什么?

4

2 回答 2

8

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

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

代替:

strHTML = Mustache.to_html(template, data);
于 2011-04-01T17:47:07.463 回答
3

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

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

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

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

仅对一个名称产生相同的结果,但会在获得更多名称时扩展列表。

于 2013-06-11T19:02:16.407 回答