2013-08-03 154 views
3

我使用Mustache.js,我有下面的模板来渲染一个下拉列表:Mustache.js不正确渲染

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

和JSON对象,我传递给Render方法:

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> 

呈现的是一个空的下拉列表。 尽管在小胡子demo page如果我粘贴我的模板和Json数据,它呈现良好。 任何想法发生了什么问题?

+0

被引用的键值对? –

+0

@ Sushanth--是的,我只是从控制台上复制了整个对象,所以它就像这样。 –

+0

您是否检查控制台中的任何错误 –

回答

2

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

所以我不得不做的是:

object = $.parseJSON(jsonData); 
var html = Mustache.render(template, object); 
1

我不知道为什么会发生这种情况:您引用的演示页面使用Maustache.to_html方法。那definitely works well

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

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

+0

它没有真正回答我的问题,但upvoted指着我在正确的方向,谢谢。我要发布我的答案。 –