2014-09-29 228 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對象或使用爲內容的另一手把模板的靈活性。

雖然我對任何其他解決方案都是開放的。