【发布时间】:2018-09-27 03:10:57
【问题描述】:
考虑下表template.hbs:
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Value</th>
</tr>
</thead>
<tbody>
{{#* inline "testTableRowTemplate"}}
<tr>
<td>{{Id}}</td>
<td>{{Name}}</td>
<td>{{Value}}</td>
</tr>
{{/inline}}
{{#* inline "testTableEmptyTemplate"}}
<tr>
<td colspan="99">There are no rows</td>
</tr>
{{/inline}}
{{#* inline "testTableLoaderTemplate"}}
<tr>
<td colspan="99">
<i class="fa fa-spinner fa-spin fa-3x fa-fw"></i>
<span class="sr-only">Loading...</span>
</td>
</tr>
{{/inline}}
</tbody>
</table>
从代码中,我使用 ajax 调用加载此模板并将其编译为 HandlebarsTemplateDelegate,当有新数据可用时,我使用它来动态刷新表。但是,我希望能够只定位一行,所以我需要一个只有“testTableRowTemplate”部分的 HandlebarsTemplateDelegate 才能做到这一点。有没有办法从代码中做到这一点?我在编译主模板后尝试了以下各项,但无法访问部分模板。
var rowPartial = Handlebars.partials["testTableRowTemplate"]; //doesn't work
和
var rowPartial = Handlebars.compile("{{>testTableRowTemplate}}"); //doesn't work
我希望避免表有多个 .hbs 文件,因此理想情况下我可以在同一个文件中定义可重用的部分。有什么想法吗?
【问题讨论】:
标签: javascript typescript handlebars.js