2013-07-04 83 views
2

Emberjs能夠在模型加載時自動提升視圖。例如,使用以下模板如何在模型加載時更新視圖

{{#each controller}} 
    {{name}} 
{{each}} 

每次加載控制器中的模型時都會更新視圖。

但是,如果我們需要實現不支持此功能的自定義視圖,該怎麼辦。準確地說,我需要一個呈現圖形圖的視圖。我爲此使用了一些第三方庫。我在控制器中的數據代表了我的觀點應該以圖表形式呈現的一些觀點。通常在使用這些第三方庫時,我們需要設置數據,然後調用draw函數。

問題是,當我剛剛將我的controller.model綁定到我的chart數據時,圖表不知道這些數據是否真的加載並且draw函數崩潰。所以我認爲,我需要一些觀察員,但我不知道該把它放在哪裏。我嘗試的是觀察員controller.model.isLoaded,並在更改時致電draw。但它只是一次,當我在我的路線上來回走動時,draw不再被調用,因爲模型全部加載。

回答

0

您可以在插入視圖時添加一個條件。一旦模型加載

0

您可以從model財產,你是對的包裝chartData屬性綁定切換

{{#if controller.model.isLoaded}} 
Put your chart view in here 
{{/if}} 

的觀點纔會被渲染。 chartData財產然後可以取決於modellastUpdate。最後添加一個update()方法,刷新lastUpdate屬性。調用更新會自動觸發chartData綁定的刷新,並因此觸發圖表。

lastUpdate: new Date(), 

chartData: function() { 
    return this.get('model'); 
}.property('model', 'lastUpdate'), 

update: function() { 
    this.set('lastUpdate', new Date()); 
} 
相關問題