2013-08-27 61 views
1

在topics.index中,我發送主題列表作爲JSON,而不發送關係ID(一個主題有很多帖子,許多用戶,編輯,喜歡等等,我不顯示因此我不希望在使用App.Topic.find()訪問topics.index時渲染所有關係id)Ember數據。從主題列表訪問主題時重新加載數據

因此,無論何時單擊主題鏈接,ember-data都不會從主題獲取/:topic_id,如果它發現特定主題已被加載(但這次,所有關係都是必需的)。有沒有辦法讓我們每次進入新鏈接時都可以重新加載ember-data,而不管數據是否已經加載?

重新加載還減少了對服務器的請求數量。

讓我們說一個話題有很多帖子和很多評論: 當呈現主題列表時,我們在每個主題中存儲post_ids和comment_ids,當呈現主題時,ember-data現在會向服務器發出兩個請求。一個用post_ids和所有評論獲取所有帖子。

如果我們強制重新加載,我們可以使用一個請求來代替多個sideload所有關係數據來獲取hasMany或belongsTo數據。

回答

1

Ember Data當前延遲加載關聯。所以你應該能夠發送你最初的json中的所有id。

點擊特定主題後,您可以再次請求記錄(使用store.reloadRecord)並側載您需要的所有模型,或者只需讓Ember Data在請求時使用它們即可。

+0

我們應該在哪裏使用store.reloadRecord?在setupController中?在我們請求重新加載以從服務器獲取記錄的時候,Ember-Data還將側面加載與可用ID的關聯,因此這可能不會阻止加載關聯的多個請求。 – Gogu

+0

當你爲'TopicRoute'定義'model'時。你可以用'store.hasReferenceForId(App.Topic,topic_id)'來檢查記錄是否已經在商店中。這不是一個很好的解決方案,因爲每當您達到該主題時都會重新加載數據。 –

+0

我正在建設體育相關的網站,因此我想每次都要重新加載數據。模型函數並不總是被調用。 – Gogu