2014-07-21 13 views
2

我一直在使用動態DOM追加來初始化我的應用程序,使用jQuery.handlebars作爲模板庫。但jQuery.handlebars的問題在於它不會將模板呈現給動態調用的DOM。示例jQuery.handlebars模板不在動態DOM附加呈現

$(document).ready(function(){ 
     $('body').append('<div id="content"></div>'); 
     $('#content').render('default', { 

     }); 
    )}; 

默認爲模板文件default.hbs,所有模板路徑都已正確初始化。

,但它的情況下工作,其中

的index.html

<div id="#content"></div> 

jQuery的文件

$('#content').render('default', { 

    }); 

與jQuery.handlebars的另一個問題是,它不附加任何元素使用jQuery的模板。例如

default.hbs

<div id="#append-content"></div> 

jQuery代碼

 $('#append-content").html('Hi'); 

,但內容 「嗨」 不會出現。

這是有點混亂,請指教,如果它的錯誤或如果有人反對使用jQuery.handlebars,請建議一個新的模板庫去。

+0

您是否在jsbin或jsfiddle中有失敗的演示? – blessenm

+0

@blessenm [演示](http://plnkr.co/edit/dhdg5c04uzrpFM5Q5UiS)這個plunker告訴你它是什麼..但第一個問題是部分解決在這個例子....追加內容template.hbs是一個大問題 – cs1193

回答

1

jquery.handlebars渲染方法是異步的。您正在嘗試在渲染完成之前追加到容器。呈現方法在完成呈現時觸發「render.handlebars」事件。在回調中進行DOM操作。

$('#content').render('template', { 

}).on('render.handlebars', function() { 
    $('#append-content').html("hello"); 
}); 
+0

非常感謝,@blessenm,它像魅力一樣工作,順便說一句,我找不到jquery.handlebars的很多文檔,我知道你是否擁有可以共享的任何引用。 – cs1193

+0

我只是去了插件的源代碼。 https://github.com/71104/jquery-handlebars/blob/master/src/plugin.js#L73它是一個非常簡單的插件。接受答案。 – blessenm