【问题标题】:EmberJS 404 Error HandlingEmberJS 404 错误处理
【发布时间】:2013-11-24 18:04:11
【问题描述】:

我正在处理 EmberJS 的错误处理。现在我可以像这样处理我的错误:

App.MediaShowRoute = Ember.Route.extend
...
 actions:
     error: ()->
         @transitionTo '404'

但这只是一个临时决定。我现在想要做的是在该路线中呈现“404”模板,在那里我得到 404 错误。例如,如果我去

/media/111111

路由,我得到一个 404 错误,我不想转换到 404 页面,我想留在同一页面上,但在其中呈现 404 模板。我是这样尝试的:

actions:
    error: () ->
        @render '404',
            into: 'media.show'

但它不起作用 :) 我将感谢您的帮助 :)

【问题讨论】:

  • Edu,不,这不起作用。

标签: ember.js coffeescript ember-data


【解决方案1】:

您可能需要查看ErrorRoute 和error 模板here。

它不能很好地处理错误代码,但是当您拒绝 model 上的 promise App.MediaShowRoute 时,您的错误将成为 ErrorController 的内容...然后您可以检查在你的ErrorRoute#renderTemplate

App.ErrorRoute = Ember.Route.extend({
    'renderTemplate' : function() {
        switch (this.get('controller.content.code')) {
            case 404 : return this.render('404');
            default : return this.render();
        }
    }
});

请查看我的博客文章,了解有关如何传递错误代码的更深入示例:http://www.riverrockapps.com/post/improving-error-route-in-emberjs

【讨论】:

  • 感谢您的回答,它真的很有帮助,但我忘了说我正在使用 Ember Data。那么,您能帮我修改一下我的适配器吗?
  • 您还可以检查错误控制器内容controller.content 并与原因字符串进行比较,而不是使用错误代码,这样您就可以避免修改适配器...来自文档:The "reason" for the error (i.e. the exception thrown or the promise reject value) will be passed to that error state as its model.
  • 答案中的两个链接都不再有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 1970-01-01
  • 2013-12-08
  • 2013-07-05
  • 2012-11-16
  • 2017-03-02
  • 2013-10-17
相关资源
最近更新 更多