2012-08-24 226 views
1

我有數據的數組,當我試圖用手柄模板進行編譯時,我得到的錯誤爲「var fn = options.fn,inverse = options.inverse; - 選項未定義」 「列」。 有人可以讓我知道這裏錯過了什麼嗎?手把模板

testData = [ 
    title : 'text1', 
    values : {column: [0, 0, 0]} 
] 


<table> 
{{#each}} 
<tr>  
    <td>{{title }}</td> 
    {{#each values}} 
     <td>{{column}}</td> 
    {{/each}} 
</tr> 
{{/each}} 
</table> 



var template = Handlebars.compile(tmpl_src);  
var html = template(testData); 
$(body).html(html); 
+0

'testData'真的看起來像什麼?它是一個數組還是一組對象? –

+0

testData是一個對象數組。 – shava

回答

1

我不能重現你的錯誤,但它看起來像一個Handlebars助手被錯誤地調用。最有可能的候選人是你的{{#each}},因爲each應該被調用以迭代。我們可以通過調用模板函數與對象解決這個問題,使您的testData有模板中的名稱:

var testData = [ 
    { title : 'text1', values : {column: [0, 0, 0]} }, 
    //... 
]; 
var template = Handlebars.compile(tmpl_src);  
var html = template({ 
    rows: testData 
}); 

然後稍作調整到模板:

<table> 
    {{#each rows}} 
     <tr>  
      <td>{{title}}</td> 
      {{#each values.column}} 
       <td>{{.}}</td> 
      {{/each}} 
     </tr> 
    {{/each}} 
</table> 

我也調整內部each,以便它遍歷values內部的數組,而不是嘗試遍歷values本身,{{.}}引用當前項目,以便應該給出您之後的零。

演示:http://jsfiddle.net/ambiguous/CRCG5/

+0

非常感謝。它爲我工作。 – shava