2014-09-29 230 views
0

我将Handlebars和BackboneJS一起使用。我有互相延伸的Backbone Views,例如一个ModalView和一个SpecificModalViewModalView有车把模板,像这样(简化):渲染变量部分

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

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

这是否超出了Handlebarjs的范围,我应该只是使用jQuery来查找模态主体并用modalBody通过的任何内容替换它的内容?或者Handlebarjs可以处理变量partial和HTMLElements?

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

感谢您的任何帮助。

回答

0

好吧,我刚刚找到一个解决方案,您可以从Handlebars.SafeString对象的助手返回HTML。所以SpecificModalView可以做这样的事情:

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

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

虽然我对任何其他解决方案都是开放的。