[英]How do I display Promise rejection data in Ember's error template?
我想在我的Ember錯誤模板中顯示有關被拒絕的模型承諾的信息。 Ember錯誤路由文檔說 :
錯誤的“原因”(即拋出的異常或承諾拒絕值)將作為其模型傳遞給該錯誤狀態。
所以這里有一些代碼試圖測試這個,使用一個拒絕帶有錯誤消息的promise的應用程序路由,以及一個試圖顯示它的錯誤路由和模板:
App.Router.map(function() {
this.route('fail');
});
App.FailRoute = Ember.Route.extend({
model: function() {
return new Ember.RSVP.Promise(function(resolve, reject) {
reject('This is an error message');
});
}
});
App.ErrorRoute = Ember.Route.extend({
setupController: function(controller, model) {
this._super.apply(this, arguments);
// This always alerts with "Error model is null", when I expect
// "Error model is This is an error message" instead
alert('Error model is ' + model);
}
})
和錯誤模板:
<h2>An error happened</h2>
{{#if model}}
Message: {{model}}
{{else}}
But no message was given
{{/if}}
當我嘗試這樣做時,我的錯誤路徑(以及模板)從不接收拒絕對象作為其模型。
這似乎是一個錯誤,但至少在通過承諾拒絕的情況下 - 這對我有用。
App.FailRoute = Ember.Route.extend({
model: function() {
return new Ember.RSVP.Promise(function(resolve, reject) {
reject('This is an error message');
});
},
actions: {
error: function(error, transition) {
this.transitionTo('error', error);
return true;
}
}
});
然后,在錯誤模板中:
<script type="text/x-handlebars" data-template-name="error">
{{link-to 'Back' 'index'}}
<h2>An error happened</h2>
{{#if model}}
Message: {{model.error}}
{{else}}
But no message was given
{{/if}}
</script>
你在這里更新(工作)JSBIN
這有點令人討厭,但是你傳遞給reject
的reason
必須是它作為模型正確傳遞給錯誤狀態的對象。
這就是你所需要的:
App.FailRoute = Ember.Route.extend({
model() {
return new Ember.RSVP.Promise((_, reject) => {
reject({error: 'This is an error message'});
});
}
});
然后,對於您的錯誤模板,您只需引用{{model.error}}
。
這對我有用,而只是使用字符串作為reason
沒有......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.