我不确定我是否做错了什么,但在我的ApplicationRoute上我有类似的东西:
actions: {
error: function(error, transition) {
var self = this;
metadata = {
'timeout': {
action: function(error, transition) {
BootstrapDialog.alert({message: 'Request Timeout!'});
}
},
'forbidden': {
action: function(error, transition) {
self.transitionTo('companies');
}
},
'unauthorized': {
action: function(error, transition) {
window.location.replace(error.responseJSON.redirect_url);
}
},
'bad gateway': {
action: function(error, transition) {
throw new Error("Error");
}
}
};
if(error.statusText.toLowerCase() in metadata) {
metadata[error.statusText.toLowerCase()].action(error, transition);
}
}
}
我有一个error.hbs模板,我希望这个模板可能被错误的网关'错误,但模板没有加载,有什么特定的方法可以加载默认的错误模板吗?
感谢。
答案 0 :(得分:2)
如果定义应用程序错误处理程序,则必须呈现错误模板。
App.ApplicationRoute = Ember.Route.extend({
actions: {
error: function() {
this.render('error', {
into: 'application'
});
}
}
});
有一个例子here。
您可以删除错误处理程序并检查错误模板是如何通过ember呈现的。
答案 1 :(得分:2)
只是return true
所以错误不断冒出来:
actions: {
error(transition, originRoute) {
return true;
}
}
How to both have an action error and render template in EmberJS
答案 2 :(得分:1)
添加@ ppcano的答案:
如果您需要在错误模板上显示错误消息,请将错误对象传入错误操作,如here所示。
actions: {
error: function(error) {
// e.g. you can have a controller for the error route and set error.message and error.status here
this.render('error', {
into: 'application'
});
}
}