2012-08-24 46 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