我有一個EmberJS ArrayController。我想在此控制器上有一個計算屬性neurons
,它是model
屬性的子集。該子集是基於綁定到currentDataset
的側邊欄中的切換按鈕計算的。另一個計算出的屬性activePlots
則取決於neurons
; Neuron
模型與Plot
的關係爲hasMany
,並且activePlots
加載neurons
中與每個神經元對象關聯的所有繪圖對象。只有在EmberJS中實現了多個承諾後才執行代碼
目前我試圖用mapBy
來做到這一點,但我遇到了一個問題。對象plots
的每次檢索返回一個PromiseArray
。我需要一次處理所有返回的地塊。我知道我可以致電then
對個人電話get('plots')
的承諾結果,但是如何在get('plots')
調用已返回所有神經元后才執行代碼?
neurons: (->
@get('model').filterBy('dataset', @get('currentDataset'))
).property('model', 'currentDataset'),
activePlots: (->
plots = @get('neurons').mapBy('plots')
# ...code to execute after all plots have loaded
).property('neurons')
UPDATE:從console.log(plotSets)
的then
回調內部控制檯輸出的照片,
Ember.RSVP.all(@get('neurons').mapBy('plots')).then (plotSets) ->
console.log(plotSets)
感謝史蒂夫。我用'Em.RSVP.all(@get('neurons')。mapBy('plots'))。then(gotPlots)''實現了你的解決方案,其中'gotPlots'是我的處理函數。我發現了一些我不明白的東西,雖然 - 在'gotPlots'裏面,當我查看傳入的內容時(在一個名爲'plotSets'的參數中,在我看來它應該是一個Array的'Array' 'Plot'對象?),我發現內容不是我所期望的。它似乎是一個'Class'es數組?我張貼了上面我的控制檯輸出的圖片。我無法弄清楚如何訪問實際的陰謀對象。 –
它應該是你以前回來的同樣的東西。順便說一句,如果你想在控制檯中看到「ember types」,你可以使用'console.log(Ember.inspect(plotSets))'。 –
好的,是的,我現在已經有了工作。感謝您的幫助和關於'Ember.inspect'的提示。 –