View是inDOM后观察属性并运行代码

时间:2014-05-02 06:58:13

标签: ember.js

我在观察一个属性来绘制图表。 问题是:观察者在视图inDOM之前触发。

有没有办法等到状态改变?

App.ReportsView = Ember.View.extend({

  drawChart: function() {

    console.log(this.get('state'));
    // draw some charts

  }.observes('controller.chartData.projects')

});

1 个答案:

答案 0 :(得分:1)

View有一个 state 属性,您可以在其中检查它是否在DOM中,但它不是公共API。

通过侦听 didInsertElement 事件,可以在视图中设置属性。

这可能是一种可行的方法(未经测试):

App.ReportsView = Ember.View.extend({

  setInDOM: function(){

    this.set('isInDom', true);
    this.drawChart();

  }.on('didInsertElement'),

  tryDrawChart: function() {

    if ( this.get('isInDom') ) {
      this.drawChart();
    } 

  }.observes('controller.chartData.projects'),

  drawChart: function() {

  }

});