Javascript 车把模板

Javascript 车把模板,javascript,handlebars.js,Javascript,Handlebars.js,我有一个带有数据的数组,当我试图用handlebar模板编译它时,在获取“column”的值时,我得到的错误是“var fn=options.fn,inverse=options.inverse;-option未定义”。 有人能告诉我这里错过了什么吗 testData = [ title : 'text1', values : {column: [0, 0, 0]} ] <table> {{#each}} <tr> <td>{{ti

我有一个带有数据的数组,当我试图用handlebar模板编译它时,在获取“column”的值时,我得到的错误是“var fn=options.fn,inverse=options.inverse;-option未定义”。 有人能告诉我这里错过了什么吗

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);
testData=[
标题:“text1”,
值:{列:[0,0,0]}
]
{{{#各}
{{title}}
{{{#每个值}}
{{column}}
{{/每个}}
{{/每个}}
var template=handlebar.compile(tmpl\u src);
var html=模板(testData);
$(body).html(html);

我无法重现您的错误,但它看起来像是一个车把助手被错误调用。最有可能的候选者是您的
{{{{each}}
,因为
每个
都应该被调用以进行迭代。我们可以通过使用对象调用template函数来解决该问题,以便您的
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>
然后对模板进行轻微调整:

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>

{{#每行}
{{title}}
{{{#每个值.列}
{{.}} 
{{/每个}}
{{/每个}}
我还调整了内部
each
,使其在
values
内部的数组上迭代,而不是试图在
values
本身上迭代,
{.}
引用当前项,因此应该给出您所要查找的零


演示:

我无法重现您的错误,但它看起来像是一个车把助手被错误调用。最有可能的候选者是您的
{{{{each}}
,因为
每个
都应该被调用以进行迭代。我们可以通过使用对象调用template函数来解决该问题,以便您的
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>
然后对模板进行轻微调整:

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>

{{#每行}
{{title}}
{{{#每个值.列}
{{.}} 
{{/每个}}
{{/每个}}
我还调整了内部
each
,使其在
values
内部的数组上迭代,而不是试图在
values
本身上迭代,
{.}
引用当前项,因此应该给出您所要查找的零


演示:

testData到底是什么样子?它是一个数组还是一个对象数组?testData是一个对象数组。
testData
到底是什么样子的?它是一个数组还是一个对象数组?testData是一个对象数组。