我有一個路線,其中model
方法返回一個承諾。根據Ember.js spec,這導致某些操作(呈現,setupController
)被延遲,直到承諾解決。立即在Ember.js中渲染
這對我來說並不好。我希望立即呈現視圖。然後,一旦模型變得可用,我想在控制器上設置一個屬性。這將導致重新渲染視圖的適當部分。
這樣做的正確方法是什麼?特別是我不想操縱我的控制器內的承諾。理想情況下,我將在路由中完成所有依賴設置,就像現在一樣。
我有一個路線,其中model
方法返回一個承諾。根據Ember.js spec,這導致某些操作(呈現,setupController
)被延遲,直到承諾解決。立即在Ember.js中渲染
這對我來說並不好。我希望立即呈現視圖。然後,一旦模型變得可用,我想在控制器上設置一個屬性。這將導致重新渲染視圖的適當部分。
這樣做的正確方法是什麼?特別是我不想操縱我的控制器內的承諾。理想情況下,我將在路由中完成所有依賴設置,就像現在一樣。
使用這裏LoadingRoute
,例如解決了這個問題:
需要注意的是較新版本(> = 1.3我認爲)也支持更復雜的場景。更多細節在這裏:
http://emberjs.com/guides/routing/loading-and-error-substates/
有類似的問題。通過等待didInsertElement
在View
上觸發,然後通過使用this.get('controller').send('actionInsideControllerHere');
調用控制器上的一個動作,我解決了即時渲染問題。該操作調用我的模型(對象)之一,並更改控制器上的屬性以顯示正在等待數據的組件上的「spinners」。可能有更好的方法來做到這一點,但這是我現在想出來的。讓我知道這是否適用於你。