2012-03-06 36 views
1

我有一個JSON數據對象和一個使用Mustache語法編寫的text/html JavaScript模板。我使用iCanHaz.js作爲模板解析器。iCanHaz.js + Mustache不呈現數據對象中的第一行

我的問題是數據對象中的第一行沒有顯示。

這裏是我的JS代碼:

var data = jQuery.parseJSON('{"data":[{"title":"Title One"}, {"title":"Title Two"}]}'); 
var html = ich.data_template(data); 

我的鬍子模板:

<script type="text/html" id="data_template"> 
    {{#data}} 
     {{title}}<br /> 
    {{/data}} 
</script> 

上面的代碼輸出這是我的渲染HTML:

<br /> 
Title Two<br /> 

正如你所看到的不顯示JSON對象中的「Title One」。

有誰知道爲什麼?我猜想這是我的JSON對象沒有正確構造(數組/對象)的問題。

非常感謝。

回答

3

嘗試將原始標誌(第二個參數)設置爲true。

var data = jQuery.parseJSON('{"data":[{"title":"Title One"}, {"title":"Title Two"}]}'); 
var html = ich.data_template(data, true); #Note the true. 

此外,爲什麼你寫你的JSON作爲一個字符串和解析它?你可以這樣做:

var data = {"data": [{"title": "Title One"}, {"title": "Title Two"}]}; 
var html = ich.data_template(data, true); 

沒有原始標誌,它返回節點元素的數組,你將需要設置根元素,爲它工作。

<script type="text/html" id="data_template"> 
    <div> 
    {{#data}} 
     {{title}}<br /> 
    {{/data}} 
    </div> 
</script> 

您可以通過在控制檯中運行以下JavaScript來測試它。

ich.addTemplate('data_template', '{{#data}}{{title}}<br />{{/data}}'); 
var data = {"data": [{"title": "Title One"}, {"title": "Title Two"}]}; 
var html = ich.data_template(data, true); 
console.log(html); 

html = ich.data_template(data); 

console.log(html); 

ich.addTemplate('data_template_root', '<div>{{#data}}{{title}}<br />{{/data}}</div>'); 

html = ich.data_template_root(data, true); 
console.log(html); 

html = ich.data_template_root(data); 

console.log(html); 
+0

啊,非常感謝 - 這是我失蹤的第二個參數原始標誌;它現在工作正常。並重新。原始的JSON,我實際上是從Web服務中獲取它的,所以上面的例子只是OP的簡化提取。再次感謝。 – 2012-03-06 14:16:10