我有一些jQuery代码需要在呈现视图时运行。对于初始渲染,我可以轻松地进行
App.FooView = Ember.View.extend({
didInsertElement: function() {
console.log("the view was rendered");
this.$().someStuff();
}
});
但是由于someStuff()
方法正在操纵视图元素的属性,因此我需要在由于数据绑定而重新呈现视图时运行它,因为它将丢失自定义生成的属性。
答案 0 :(得分:15)
如果您想在某个属性发生变化时重新渲染视图,那么您想要的内容将如下所示:
App.FooView = Ember.View.extend({
myProperty: 'This value might change',
myPropertyChanged: function() {
//Do some stuff here (maybe change the template) and call...
this.rerender();
}.observes('myProperty')
});
但是如果你想在视图创建后只重新渲染视图,那么你想要更像这样的东西:
App.FooView = Ember.View.extend({
init: function() {
this._super();
//Do some stuff here (maybe change the template) and call...
this.rerender();
}
});
答案 1 :(得分:0)
除了Akash的解释之外,您还希望在创建视图后使用didInsertElement钩子而不是init钩子来重新渲染。所以看起来更像是:
App.FooView = Ember.View.extend({
didInsertElement: function() {
this.rerender();
}
});
虽然,我不确定为什么你需要在视图已经渲染后重新渲染。