6

我有一些 jQuery 代码需要在呈现视图时运行。对于初始渲染,我可以轻松完成

App.FooView = Ember.View.extend({
  didInsertElement: function() {
    console.log("the view was rendered");
    this.$().someStuff();
  }
});

但由于该someStuff()方法正在操作视图元素的属性,因此我需要在视图因数据绑定而重新渲染时运行它,因为它会丢失自定义生成的属性。

4

2 回答 2

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();
    }
});

来源: http ://emberjs.com/api/classes/Ember.View.html

于 2012-12-28T04:34:43.950 回答
0

除了 Akash 的解释之外,您可能希望使用 didInsertElement 钩子而不是 init 钩子仅在创建视图后重新渲染。所以它看起来更像:

App.FooView = Ember.View.extend({
    didInsertElement: function() {
        this.rerender();
    }
});

虽然,我不确定为什么在视图已经渲染后需要重新渲染。

于 2014-06-11T17:22:35.493 回答