2016-06-22 53 views
4

我想呈現關於服務器錯誤的消息。我創建了提供錯誤消息視圖的特殊路由。同時,我不希望重定向到該路由的網址以便能夠重新加載當前頁面。所以我決定在應用程序路徑中使用函數渲染。Ember route.connections在渲染錯誤事件時未定義

// application/route.js 
actions: { 
    error: function(error, transition) { 
    if (error.errors) { 
     return this.render('server-error.internal'); 
    } 
    return true; 
    } 
} 

當我從其他應用程序的路徑加載正確導致錯誤頁面重定向時,它正常工作。當我手動輸入網頁的URL錯誤我把錯誤

無法讀取的不確定

財產「推」當我檢查了它是關於未初始化的路由的屬性名爲「連接」。我在github上發現了類似的問題,但我找不到解決方案。我會很感激任何幫助。

我使用燼-CLI:2.4.3

回答

0

我發現解決此問題的,這可能是與類似的問題別人有用。而不是使用error event我用error substateSee documentation。理論上它應該是一樣的,但在這種情況下它不會。

我創造了新的途徑error和內部renderTemplate方法我設置目標URL,檢查錯誤的類型(通過自定義功能)和渲染正確的模板:

// app/pods/error/route.js 
export default Ember.Route.extend({ 
    renderTemplate: function(controller, model) { 
    const transition = this.get('router.router.activeTransition'); 
    const url = this.get("router").generate(transition.targetName); 
    this.get("router").router.updateURL(url); 

    if (model.errors) { 
     if (is404Error(model.errors)) { 
     return this.render('server-error.not-found'); 
     } else if (is500Error(model.errors)) { 
     return this.render('server-error.maintenance'); 
     } 
    } 
    return true; 
    } 
});