2015-12-11 71 views
0

我正在使用ember中的chart.js,並且遇到一個錯誤,其中圖形中斷時更新圖形數據時未重新渲染組件。Ember:如何強制運行循環在屬性更改之前循環

我動態渲染該組件與{{component totalsChartComponent}}幫手,所以如果我可以只設置totalsChartComponent未定義,讓它循環運行循環之前,我更新的組件的數據,應該清除出組件,並允許它正確地呈現

我試圖做到這一點是這樣的:

Ember.run.next(this, function() { 
    this.set('totalsChartComponent', undefined); 
}) 
Ember.run.next(this, function() { 
    this.set('totalsChartComponent', "ember-chart"); 
}) 

,但這似乎並沒有被運行的第二個功能後的第一個完整的運行循環週期。這看起來應該是工作還是我在這裏做錯了什麼?

回答

0

改變我的代碼

Ember.run.schedule("actions", this, function() { 
    this.set('totalsChartComponent', undefined); 
}); 

Ember.run.next(this, function() { 
    this.set('totalsChartComponent', "ember-chart"); 
}); 

這裏是我的,爲什麼這個工程的認識:

Ember.run.next時間表在當前操作後,在運行循環週期的事件。我相信我的兩個Ember.run.next調用在同一個運行循環中得到評估,等待該循環完成,然後將它們的動作引入到下面的循環中。基本上,對next的多次調用不會創建多個運行循環。

Ember.run.schedule安排當前循環中的某些內容或創建一個。通過這樣做,然後調用Ember.run.next我實現了爲第一個函數創建一個運行循環,然後爲第二個運行循環創建另一個運行循環的效果。