把手每个助手上下文

时间:2014-09-30 14:22:58

标签: each handlebars.js

我正在尝试在下面的模板代码块中使用每个迭代器的把手:

<table>
    <tr><th></th><th>Today</th><th>This Month<br>(To Date)</th><th>Last Month</th></tr>
    {{#each Activities}}
        {{examineObject this}} - first -
        <tr><td>{{examineObject this}}</td>
        <td>{{Today}}</td>
        <td>{{ThisMonth}}</td>
        <td>{{LastMonth}}</td></tr>
        {{examineObject this}} - third - 
    {{/each}}
    <tr class='total'><td>Net Change</td>
        <td>{{Totals.Today}}</td>
        <td>{{Totals.ThisMonth}}</td>
        <td>{{Totals.LastMonth}}</td></tr>
</table>

examineObject是我编写的一个把手助手,只需在变量上调用JSON.stringify()即可。我这样做是为了评估背景。帮手就是:

examineObject: function(object){
    return JSON.stringify(object);
}

当我编译并渲染上面的模板时,发生了一些非常奇怪的事情。第一个和第三个this调用examineObject的上下文是activity迭代器选择的单个each。但是,第二个this调用examineObject的上下文(由html标记包围)是整个模板的上下文 - NOT 个人的上下文{{1}由activity迭代器选择。任何人都可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

不要使用jQuery的.find()来获取您的把手模板,因为它会抓取渲染的DOM,这可能与您的书面文件内容不同。

相反,请尝试loading your template file asynchronously

<强>更新

或者,如果您拥有大量模板并且不想运行大量异步请求,您可能会对precompiling the handlebars templates感兴趣,如#34; Handling handlebars.js like a pro&#34;