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);
4

1 に答える 1

1

エラーを再現できませんが、Handlebars ヘルパーが正しく呼び出されていないようです。最も可能性の高い候補は、反復する何かで呼び出されることになっている{{#each}}asです。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内部の配列を反復処理するようにしました。現在のアイテムを参照して、後のゼロを取得する必要があります。valuesvalues{{.}}

デモ: http://jsfiddle.net/ambiguous/CRCG5/

于 2012-08-25T18:33:18.597 に答える