我正在尝试在下面的模板代码块中使用每个迭代器的把手:
<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
迭代器选择。任何人都可以解释为什么会这样吗?
答案 0 :(得分:1)
不要使用jQuery的.find()
来获取您的把手模板,因为它会抓取渲染的DOM,这可能与您的书面文件内容不同。
相反,请尝试loading your template file asynchronously
<强>更新强>
或者,如果您拥有大量模板并且不想运行大量异步请求,您可能会对precompiling the handlebars templates感兴趣,如#34; Handling handlebars.js like a pro&#34;