2016-10-20 4 views
1

私は本当に簡単なことをやろうとしています。私は私のapplication.hbsのアウトレットにサーバーエラーを表示したい。Ember + Emberのデータ、アプリケーションレベルでの処理のエラー、Ember 2.8

https://guides.emberjs.com/v2.6.0/routing/loading-and-error-substates/を読んで、私のエラーを検出することができましたが、私のerror.hbsのモデルとしてエラーをモデルに渡すことはできません。

私のアプリケーションルートに記載されているようにエラーアクションハンドラを登録すると、私はerror.hbsテンプレートをレンダリングできますが、私が扱っているエラーオブジェクトのコンテキストにアクセスすることはできません。また、私のURLルートの更新は望ましくない。

actions: { 
    error(err, transition) { 
     return this.transitionTo('error'); 
    } 
} 

このハンドラを使用すると、error.hbsをコンセントにレンダリングしますが、エラーオブジェクトからそのテンプレートにレンダリングするコンテキストを取得できません。私はモデルとして誤って渡ししようとすると、私はこのエラーを取得する:

More context objects were passed than there are dynamic segments for the route: error 

今エラーがモデルを読み込む発生するたびに、私は永遠にハングロードスピナー状態を取得します。代わりに、サーバーのエラーを表示したいと思います。

答えて

0

エラーはモデルとしてエラーサブ状態に渡されます。 throw nまたはreject edのオブジェクトは、エラーサブ状態のモデルになり、その属性はプロパティになります。

たとえば、throwまたはRSVP.reject{ message: 'An Error Occurred' }の場合は、{{model.message}}を使用してerror.hbsに表示することができます。私は今までthrow/rejectプリミティブが動作することを見たことがありません。

Here is a twiddle that demonstrates working error substates(追加の例を表示するには、/拒否ルートと/未定義ルートを読み込みます)。

テンプレート/アプリケーションerror.hbsをひねり(これもあり得るerror.hbs)から

コードthrow.js

<p>Application-Error Template</p> 
<p>model: {{model}}</p> 
<p>model.message: {{model.message}}</p> 
<p>model.customMessage: {{model.customMessage}}</p> 

ルート/

model(params) { 
    throw { customMessage: 'Reject Error Message' }; 
}, 

ルート/ reject.js

model(params) { 
    return Ember.RSVP.reject({ customMessage: 'Reject Error Message' }); 
}, 

経路/未定義.js

model(params) { 
    use.undefined.value; 
}, 
関連する問題