2013-08-30 41 views
0

在emberjs論壇發表了這個,但是SO似乎更合適。導致數據重載/替換的嵌套路由?

嗨!我有兩條路線叫做classyears和classyear。嵌套的時候,像這樣:

this.resource('classyears', function(){ 
    this.resource('classyear', { path: '/classyear/:classyear_id'}); 
}); 

Posterkiosk.ClassyearsRoute = Ember.Route.extend({ 
    model: function() { 
    return Posterkiosk.Classyear.find(); 
    } 
}); 

Posterkiosk.ClassyearRoute = Ember.Route.extend({ 
    model: function(model) { 
    return Posterkiosk.Classyear.find(model.classyear_id); 
    } 
}); 

我的模板是:

Classyears:

<div class="yearList"> 
{{#each item in model}} 
    {{#linkTo 'classyear' item}}{{item.id}}{{/linkTo}} 
{{/each}} 
</div> 
{{outlet}} 

Classyear:

<div class="transformContainer"> 
    {{trigger sizeComposites}} 
    {{name}} 
    {{#each students}} 
     {{partial student}} 
    {{/each}} 
</div> 

( 「觸發器」 助手是從另一個SO但是在添加之前發生了這個問題)

我正在使用Ember模型RESTAdapter。當我加載/ classyear /:classyear_id時,它看起來像classyear正在渲染其數據兩次。一旦使用正確加載的數據,並且一次沒有加載數據。該訂單似乎是隨機的。如果最後發生無數據選項,則會清除正確加載的數據,並留下空白頁。反之亦然,頁面內容顯示得很好。

有什麼想法?

/編輯2:更多信息:

看起來好像0紀錄的答覆是classyears加載。所以,在我的hasMany字段「學生」中,零記錄回覆可能只是零記錄。

如果我加載/ classyears(沒有指定班級年份),它只加載一次,以獲得班級年選項。如果我然後點擊課程年,它不會重新加載classyear,除非我刷新頁面,此時它將加載這兩個頁面,並且如果classyears加載(findall)第二次完成,它將不顯示頁面上的任何數據(其他而不是類年模板,正確填充,在頂部)。

所以......也許我的classyears模型沒有正確處理hasMany字段?

我覺得我越來越近,但仍不確定發生了什麼。

+0

您可以將您的classyear模板添加到您的問題嗎? – intuitivepixel

+0

編輯添加兩個模板。 –

+0

這是有點舊,但可能有一些有用的信息http://stackoverflow.com/questions/16246586/ember-data-sideloaded-properties-being-dropped-on-a-model – ianstarz

回答

1

所有你需要指定一個模型爲Student,像這樣的第一:現在

Posterkiosk.Student = Ember.Model.extend({ 
    id: Ember.attr(), 
    name: Ember.attr(), 
    imageUrl: Ember.attr(), 
    gradyear: Ember.attr() 
}); 

Posterkiosk.Student.adapter = fixtureAdapter; 

,在你的榜樣,你正在設置鍵的有許多人students,但students是數組對象,而不是ID的,所以創建一個名爲student_ids的屬性,並傳遞一個ID數組,現在這就是您的密鑰。

Posterkiosk.Classyear = Ember.Model.extend({ 
    students: Ember.hasMany('Posterkiosk.Student', {key: 'student_ids'}) 
}); 

如果設置embedded: true,那麼你的Classyears服務器的響應應該回來像這樣:

{ 
    classyears: [ 
    {..}, 
    {..} 
    ], 
    students: [ 
    {..}, 
    {..} 
    ] 
} 

否則,EM將使對Student模型端點單獨調用,並獲取數據基於student_ids屬性。

看到工作jsbin

提示:RC。7+從部分刪除了下劃線,再加上部分名稱應該用引號引起來。

+0

我確實有指定的模型爲學生。幾乎與你的相同,但我包括一個「belongsTo」(在Classyear上使用hasMany)。 現在,讓我看看我是否理解其餘的部分: 現在,我將學生數據嵌入到classyear響應中,因此每個classyear json對象都有一年的ID,而「students」屬性包含一個數組的學生對象。這就是爲什麼它拉動數據兩次(或嘗試兩次,併成功一次)? –

+0

如果我的答案有助於解決您的問題,我會很感激,如果你會接受它:) – knownasilya