2016-06-22 15 views
4

私はサーバーエラーに関するメッセージを表示したいと思います。エラーメッセージビューを表示する特別なルートを作成します。同時に、現在のページをリロードできるようにそのルートのURLにリダイレクトしたくありません。そこで、アプリケーションルートで関数レンダリングを使用することにしました。Ember route.connectionsがエラーイベントでレンダリング中に定義されていません

// application/route.js 
actions: { 
    error: function(error, transition) { 
    if (error.errors) { 
     return this.render('server-error.internal'); 
    } 
    return true; 
    } 
} 

私が正しくロード他のアプリケーションのルートからのエラーでページを行うリダイレクトするとき、それは正しく動作しています。私は、エラーを手動でページのURLを入力すると、私はそれが「接続」という名前の初期化されていないルートのプロパティについてですがチェックすると不定

のプロパティ「プッシュ」を読み込めません

エラー

を取ります。 githubについても同様の問題が見つかりましたが、解決策を見つけることができませんでした。私はどんな助けにも感謝します。

私はエンバー-cliを使用しています:2.4.3

答えて

0

を私は同様の問題を持つ誰かのために役に立つことができることが、この問題の回避策を見つけました。 error eventの代わりにerror substateを使用しました。 See documentation。理論的には同じように動作するはずですが、この場合は動作しません。

私は新しいルートerrorを作成し、renderTemplateメソッド内で、私は、ターゲットURLを設定する(カスタム機能付)、エラーの種類を確認し、適切なテンプレートをレンダリングしています:

// app/pods/error/route.js 
export default Ember.Route.extend({ 
    renderTemplate: function(controller, model) { 
    const transition = this.get('router.router.activeTransition'); 
    const url = this.get("router").generate(transition.targetName); 
    this.get("router").router.updateURL(url); 

    if (model.errors) { 
     if (is404Error(model.errors)) { 
     return this.render('server-error.not-found'); 
     } else if (is500Error(model.errors)) { 
     return this.render('server-error.maintenance'); 
     } 
    } 
    return true; 
    } 
}); 
関連する問題