我正在使用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 demo page中,如果我粘贴我的模板和Json数据,它会渲染得很好。 知道出了什么问题吗?
答案 0 :(得分:3)
经过研究,我发现了什么问题。记录变量jsonData的类型时,结果是字符串而不是对象。
所以我所要做的就是:
object = $.parseJSON(jsonData);
var html = Mustache.render(template, object);
答案 1 :(得分:1)
我不知道它为什么会发生:你引用的演示页面使用Maustache.to_html方法。那definitely works well:
document.getElementById('target').innerHTML =
Mustache.to_html(document.getElementById('template').innerText, jsonData)
但是在Javascript库的主页上.render()方法被命名。