2014-10-03 245 views
1

我有一個組件。這個組件的模板是「html數據」。這些html數據由用戶組成並存儲在數據庫中。他們裝載了ajax。Ember:動態呈現模板

通常,我們只是將組件綁定到html數據。不過,我的「html數據」也包含嵌入式的ember組件。 例如:

<html> do something {{button action="abc"}} </html>. 

所以,我要做的就是動態地改變組件的模板。 我嘗試通過更新模板。

this.template = Ember.Handlebars.compile(html); 
this.rerender(); 

但是,組件不會用新模板重新渲染!

你有一個想法如何做到這一點?

預先感謝您

綠色

+0

嘗試將編譯後的模板分配給模板列表,如:'Ember.TEMPLATES ['some-name'] = Em.Handlebars.compile('html here');',然後在您的視圖中將其設置爲是'templateName ='some-name'',就像你創建的一樣。 – MilkyWayJoe 2014-10-03 18:13:39

回答

3

你只需要調用Ember.set方法而Ember的對象設定值。使用this.set('template', template)而不是this.template = template

演示(輸入新模板到輸入和點擊按鈕):http://emberjs.jsbin.com/cuqofatisavu/1/edit?js,output

更新(THX MELC爲commenting): 設置layout屬性,而不是template如果您需要更改Ember.Component模板。

+1

我認爲組件'佈局'需要設置,http://emberjs.jsbin.com/jareci/1/edit – melc 2014-10-03 22:30:34