渲染变量部分

时间:2014-09-29 12:10:43

标签: handlebars.js require-handlebars

我正在使用Handlebars和BackboneJS。我有相互扩展的Backbone Views,例如一个ModalView和一个SpecificModalViewModalView有一个Handlebar模板,类似这样(简化):

<div class="modal-header">
    {{modalTitle}}
</div>
<div class="modal-body">
    {{modalBody}}
</div>
<div class="modal-footer">
    {{modalFooter}}
</div>

现在,modalBody通常比标题的常规占位符更复杂,并由SpecificModalView定义。我想要的是,SpecificModalView可以使用部分或modalBody对象覆盖HTMLElement

这是否超出了Handlebarjs的范围,我是否应该使用jQuery来查找模态体并将其内容替换为modalBody传递的内容?或者Handlebarjs可以处理变量partials和HTMLElements吗?

我尝试过的一个想法是SpecificModalView注册了一个名为modalBody的助手,并返回该模式所需的任何身体。助手的返回值似乎是类型转换为字符串。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

好的,我刚刚找到一个解决方案,您可以使用Handlebars.SafeString对象从帮助程序返回HTML。所以SpecificModalView可以这样做:

hbs.registerHelper('modalBody', function() {
    var tpl = require('hbs!templates/SpecificModalBody'),
    return new hbs.SafeString(tpl());
});

(我使用requirejs) 这提供了使用jQuery创建HTML对象或使用内容的另一个Handlebar模板的灵活性。

我可以接受任何其他解决方案。