2014-10-03 176 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