5

我正在使用 Mustache.js,并且我有以下模板来呈现下拉列表:

<select name="{{listName}}">
    {{#items}}
    <option value="{{id}}">{{name}}</option>
    {{/items}}
</select>

我传递给 render 方法的 json 对象是:

items:[
    0: {id:1, name:Actor}
    1: {id:2, name:Director}
    2: {id:3, name:Producer}
    3: {id:4, name:Executive Producer}
    4: {id:5, name:Assistant Producer}
    5: {id:6, name:Scriptwriter}]
listName: "occupation"

进行渲染的行是:

var html = Mustache.render(template, jsonData);

html 变量包含:

<select name>
</select>

并且呈现的是一个空的下拉列表。虽然在 Mustache演示页面中,如果我粘贴我的模板和 Json 数据,它呈现得很好。知道出了什么问题吗?

4

2 回答 2

3

经过研究,我发现出了什么问题。当记录变量 jsonData 的类型时,它原来是一个字符串而不是一个对象。

所以我所要做的就是:

object = $.parseJSON(jsonData);
var html = Mustache.render(template, object);
于 2013-08-04T22:27:30.943 回答
1

我不知道为什么会这样:您引用的演示页面使用 Maustache.to_html 方法。这绝对运作良好

document.getElementById('target').innerHTML =
    Mustache.to_html(document.getElementById('template').innerText, jsonData)

但是在 Javascript 库的主页上 .render() 方法被命名。

于 2013-08-04T21:00:49.110 回答