2014-04-01 101 views
0

我正在試圖將頭部纏繞在ember.js上。Ember模型的'hasMany'關係未加載

我有兩個模型,錄音和評論(想象一個經典的發表和評論的例子)。

我正在做的是在一個頁面上顯示所有錄音,以及每個錄音的所有註釋。每個錄音旁邊都有一個輸入框,用於爲該錄音創建新評論。

現在,一切似乎工作確定。我可以添加評論,並將其動態添加到該錄製的評論列表中。但是,當我刷新頁面時,評論不顯示,只有錄製。

我使用嵌套{{#each}}循環顯示註釋,但由於它在我動態添加註釋時工作正常,我不確定是否是問題所在。

有一個(更新)JSBin這裏: http://emberjs.jsbin.com/worulexe/12/edit

UPDATE

所以,我想通了,記錄模型的關係(以評論)不填充負載。這是爲什麼?

// The models are loaded like this in the IndexRoute 
    this.store.find('recording'); // <- this loads all the record models, but doesn't set the "comments" relations. 

服務器返回

{ 
"comments": [{"id":1,"text":"Invisible when page loaded","recording_id":1}], 
"recordings":[ 
{"id":1,"filename":"rec-01.mp3","comment_ids":[1]}, 
{"id":2,"filename":"rec-02.mp3","comment_ids":[]} 
] 
} 

的第一條記錄應該有一個評論,但它不是裝的?

+0

我有類似的問題,在我身邊。它正在4分之5的工作。一些賽車狀況:O?但嘗試調試你的路線? –

回答

0

終於找到了紅潤的問題。希望這可以爲Ember的文檔節省其他人幾個小時的挫折感和強烈的負面情緒。

事實證明,如果你使用 「active_model_serializers」 寶石爲Rails(::加載ActiveModel串行器),你需要使用Ember的 App.ApplicationAdapter = DS.ActiveModelAdapter.extend()和 App.ApplicationSerializer = DS.ActiveModelSerializer。擴展()

Ember是一個了不起的項目,但它的文檔使我完全堅果。

0

在JSBin中有以下代碼。

// Default index route 
App.Route = Ember.Route.extend({ 
    ... 
}); 

將未聲明的index路線的路線,即宣稱所有生成的路由繼承的路線。並且由於您沒有申報任何路線,您的路線中的全部都將從其中繼承,並且全部的路線將具有相同的型號。改爲使用App.IndexRoute

這讓我想到了第二點。您的ApplicationControllerArrayController延伸,所以它期望的模型是某種類型的數組。但是由於上述原因,你的模型實際上是一個對象,這就是爲什麼你的each循環沒有執行。

如果您解決了這些問題並更新了您的JSBin,我們可以幫助您解決嵌套的each循環的根問題(如果問題仍然存在)。

+0

感謝您的路線提示,它解決了我在JSBin中遇到的問題。原來的主要問題是使用JSON格式(請參閱http://stackoverflow.com/a/22882752/3484659)。我以爲我是在關注Ember的文檔,但是文檔可能已經有一週了。 – Codaster