Ember.js 如何在EmberJS中同时出现操作错误和呈现模板

Ember.js 如何在EmberJS中同时出现操作错误和呈现模板,ember.js,Ember.js,在我的EmberJS应用程序中,每当我无法访问ressource时,我都会使用各种“错误”模板来呈现特定的错误消息。例如,我有一个名为“reset password/error.hbs”的模板,当我尝试访问无效的reset password时会呈现该模板 这真的很有效 但是今天,我在ApplicationRoute中添加了一个“错误”操作。目标是捕获可能在所有页面中发生的一个非常特定的错误(401错误),我想用它来使会话无效。因此,在我的申请路线中,我有以下代码: export default

在我的EmberJS应用程序中,每当我无法访问ressource时,我都会使用各种“错误”模板来呈现特定的错误消息。例如,我有一个名为“reset password/error.hbs”的模板,当我尝试访问无效的reset password时会呈现该模板

这真的很有效

但是今天,我在ApplicationRoute中添加了一个“错误”操作。目标是捕获可能在所有页面中发生的一个非常特定的错误(401错误),我想用它来使会话无效。因此,在我的申请路线中,我有以下代码:

export default Ember.Route.extend({
   actions: {
      error: function(result) {
         if (result.status === 401) {
            this.get('session').invalidate();
         }
      }
   }
});
问题是,使用此代码,我的“重置密码”错误模板不再显示。我天真地认为,如果在“重置密码/索引”路径上发生错误,Ember会:

  • 首先检查“ResetPasswordIndexRoute”上的“错误”操作
  • 然后尝试呈现“reset password/error.hbs”(如果存在)
  • 然后冒出泡沫。。。直到它到达“application”,最后在ApplicationRoute中找到“error”操作
  • 但似乎一旦定义了“错误”操作,即使它在层次结构中更高,它也会完全替换任何可能在这里的模板

    我如何解决这个问题,并且仍然有两个错误处理程序?我尝试在错误操作中调用“\u super”,但没有结果


    谢谢

    如果有人偶然遇到这个问题,Twitter上有人给了我答案:你在
    错误
    操作中添加了一个“return true”来冒泡默认行为

    export default Ember.Route.extend({
       actions: {
          error: function(result) {
             if (result.status === 401) {
                this.get('session').invalidate();
             }
             return true;
          }
       }
    });