2014-10-16 112 views
1

我是Ember的新手。這是我的問題:重新加載雙親數據綁定上的雙向數據綁定

我有一個項目列表,當一個項目被點擊時,顯示列表旁邊的項目的細節。因此,該項目的標題顯示在列表中,細節中以及用於使項目標題可編輯的輸入中。

當我從我的主要路線導航到嵌套的項目特定路線時,一切正常:我對輸入進行了更改,更改顯示在項目列表中以及細節部分中。但是,如果我刷新頁面---雖然我的所有數據都會返回(即它按預期顯示)---當我對輸入進行更改時,它不會更新列表標題,儘管inscription中的標題路線工作正確更新。

相關的代碼如下:

App.Router.map(function() { 
    this.resource('inscriptions', function(){ 
     this.resource('inscription', {path:'/:inscription_id'}); 
     }); 
}); 

App.InscriptionsRoute = Ember.Route.extend({ 
    model: function(){ 
    return $.getJSON('javascripts/inscriptions.json') 
     .then(function(data){ 
     return data; 
     }); 
    } 
}); 

App.InscriptionRoute = Ember.Route.extend({ 
    model: function(params){ 
    return $.getJSON('javascripts/inscriptions.json') 
     .then(function(data){ 
     return data.findBy("id", params.inscription_id); 
     }); 
    } 
}); 

我缺少什麼?

回答

1

當您導航到該項目(而不是刷新)時,它會通過鏈接到幫助器傳遞模型,因此它會跳過模型路線。當你刷新它點擊獲取必要模型的每條路線。導航路線爲您提供了相同的題詞實例,而在刷新時您正在抓取完全不同的實例。

這就是說,你會想在子路徑中使用相同的題詞實例,並避免再打電話給你的服務器。

App.InscriptionsRoute = Ember.Route.extend({ 
    model: function(){ 
    return $.getJSON('javascripts/inscriptions.json') 
     .then(function(data){ 
     return data; 
     }); 
    } 
}); 

App.InscriptionRoute = Ember.Route.extend({ 
    model: function(params){ 
    return this.modelFor('inscriptions').findBy("id", params.inscription_id); 
    } 
}); 

http://emberjs.com/api/classes/Ember.Route.html#method_modelFor

+0

完美。謝謝。 – jackweinbender 2014-10-17 00:13:15