2016-10-20 54 views
1

我試圖做一些聽起來很簡單的事情。我想渲染服務器錯誤到我的application.hbs的出口。Ember + Ember數據,在應用程序級別處理錯誤子狀態,Ember 2.8

閱讀本文檔,https://guides.emberjs.com/v2.6.0/routing/loading-and-error-substates/,我能夠檢測到我的錯誤,但我似乎無法按照給定的模式將錯誤作爲模型傳遞給我的error.hbs。

如果我註冊錯誤操作處理程序在我的應用程序路由上,我能夠呈現我的error.hbs模板,但我無法訪問我正在處理的錯誤對象的上下文。此外,我的URL路由更新,這是不希望的。

actions: { 
    error(err, transition) { 
     return this.transitionTo('error'); 
    } 
} 

使用此處理程序,我做打底error.hbs我的出口,但我不從我的錯誤對象的任何上下文來渲染該模板。如果我嘗試在錯誤的模型來傳遞,我得到這個錯誤:眼下

More context objects were passed than there are dynamic segments for the route: error 

,無論何時出現錯誤加載模型,我只是得到的是永遠掛着一個正在加載的旋轉狀態。相反,我希望顯示服務器錯誤。

回答

0

錯誤作爲模型傳遞給錯誤子狀態。 throw n或reject ed的對象將是您的錯誤子狀態的模型,其屬性將是屬性。

例如,如果您使用throwRSVP.reject{ message: 'An Error Occurred' },那麼您可以使用{{model.message}}在error.hbs中顯示該錯誤。我從未見過原始圖案工作。

Here is a twiddle that demonstrates working error substates(加載/拒絕和/未定義的路線以查看其他示例)。

從玩弄

模板/應用error.hbs(也可以是error.hbs)的代碼

<p>Application-Error Template</p> 
<p>model: {{model}}</p> 
<p>model.message: {{model.message}}</p> 
<p>model.customMessage: {{model.customMessage}}</p> 

路由/ throw.js

model(params) { 
    throw { customMessage: 'Reject Error Message' }; 
}, 

路由/ reject.js

model(params) { 
    return Ember.RSVP.reject({ customMessage: 'Reject Error Message' }); 
}, 

routes/undefined.js

model(params) { 
    use.undefined.value; 
},