【发布时间】:2014-07-22 22:29:50
【问题描述】:
我看到很多东西只是将我引向部分内容,这很糟糕,因为它们必须建立在布局上下文之外。
我想做的是制作嵌套模板
例如:
<div id="person">
{{name}}
<div id="address">
{{street}}
</div>
</div>
<script>
var outer = Handlebars.compile($('#person').html());
outer({ name: 'someone special' });
var inner = Handlebars.compile($('#address').html());
inner({ street: 'somewhere cool' });
</script>
运行时,内部模板永远不会被渲染,因为外部模板会吞噬它。
如果您可以像这样命名嵌套模板,那就太好了:
{{> name}}
<div id="person">
{{name}}
{{> address}}
<div id="address">
{{street}}
</div>
{{/> address}}
</div>
{{/> name}}
<script>
var outer = Handlebars.compile($('#person').html(), 'name');
outer({ name: 'someone special' });
var inner = Handlebars.compile($('#address').html(), 'address');
inner({ street: 'somewhere cool' });
</script>
或类似的东西,这样当外部渲染时,它会单独留下地址,让内部渲染地址本身而不会将其从 DOM 中删除。
这样的事情可能吗?
这个问题的原因是我正在使用主干并且想要分离出我所有的小视图,但它会编译成一个文件。当外部用车把模板化时,其他一切都会中断。我不想使用部分内容,因为这只会让设计人员的 html 文档流中的所有内容都消失。
编辑
我认为我真正需要的是一种方法来执行 {{noparse}} 并从 registerHelper 中返回 noparse 标签之间的原始 html
【问题讨论】:
-
我不明白这个问题.. 你为什么不能这样做?
var templ = Handlebars.compile($('#person').html()); templ({ name: 'someone special', street: 'somewhere cool'}); -
因为在渲染名称时,街道不存在。街道是从地址控制器/模型/视图中渲染的。但是人员模板只是吞噬了 html 或对它的任何引用我无法呈现地址。