2016-11-30 47 views
0

我有一個嵌套的路由,刷新時會丟失模型並顯示空白頁。碼如下:Ember - 嵌套的子路由在路由刷新/重新加載時丟失模型

路由器

app.Router.map(function(){ 
    this.resource('main',{path:''}, function(){ 
     this.route('summary',{path:'/main/summary'},function(){ 
      this.route('details',{path:'/details'}) 
     }) 
    }) 
}) 

文件結構

-app 
-route 
    -main-route.js 
    -main-summary-route.js 
    -main-summary-index-route.js 
    -main-summary-details-route.js 
    -main-loading-route.js 

-controller 
    -main-controller.js 
    -main-summary-controller.js 
    -main-summary-index-controller.js 
    -main-summary-details-controller.js 

-templates 
    -main 
    -summary 
    -index.hbs 
    -details.bhs 
    -summary.hbs 
    -loading.hbs 
    -main.hbs 
    -application.hbs 

附圖有關代碼: 模板main.hbsapplication.hbs有{{outlet}} d在他們中定義。 summary.hbs也包含{{outlet}},因此當url/main/summary被點擊時,它只顯示summary/index.hbs中的內容,以及何時點擊url/main/summary/details,它僅通過渲染成摘要來顯示詳細信息。

我的ajax調用進入「main-summary-route」的模型鉤子,而它的等待,我顯示加載模板。 「main-summary-details-controller.js」擴展自「main-summary-index-controller.js」,以便代碼可以被重用。 類似地,「主彙總細節-route.js」獲取經由模型鉤相同的模型作爲一個在「主概要-route.js」詳細路線作爲 -

model: function(){ 
    return this.modelFor('mainSummary') 
} 

這是因爲ajax調用匯總了彙總和路由的數據。

問題陳述:當我點擊url main/summary時,我得到頁面,然後從那裏點擊,轉到main/summary/details,我看到頁面更新了詳細信息,但是當我在瀏覽器中手動刷新這個(/ main/summary/details),頁面是空白的,我注意到這次在細節路由中沒有模型鉤子返回的模型。

我的解決方案想法: 我認爲這將理想的工作,因爲在刷新,它會要求彙總路由第一(同父子的關係是),調用AJAX(一起加載),當數據來自通過它會顯示細節。但我想那不會發生。

我不明白,至於什麼是錯的。我想到的想法是,我是否需要在細節路線中捕捉刷新事件並再次調用ajax,以便獲取數據。使用

灰燼版 - 1.13.0

回答

0

我沒有通過最終的刷新詳情頁面再次調用AJAX解決這個問題。儘管我做了一個檢查,如果「this.modelFor('mainSummary')」可用,那麼只返回這個模型,否則從ajax獲取模型。這對我有效。

但是我仍然想知道,理想情況下它應該是獨立存在的,也就是說,當我刷新時,ajax on/main/summary應該被稱爲自身,從而在模型可用時渲染細節。