0

次のユースケースがあります。サーバー側のエラーで、何か問題が発生したことをユーザーに示したいと思います(おそらく再試行を許可します)。ポップアップまたはステータスバーのいずれかを使用できます。同時に、現在のビューを開いたままにしておく必要があります。つまり、ユーザーはエラーが発生した場所に留まる必要があります。

これは現在のビューを置き換えるため、transitionTo(...) を使用しないでください。私の意図は、通知を動的に追加/削除するアプリケーション ビュー (最も外側のテンプレート/ビュー) に一般的な機能を持たせることです。

UI を構築および変更する方法のデザイン アイデアは大歓迎です。

ありがとう!

4

1 に答える 1

1

この正確なユースケースに対する私の解決策は簡単です。ApplicationRouteこれらの例外を収集してカスタムに挿入し、ExceptionsControllerメインexceptionsアプリケーション テンプレートのどこかにレンダリングするイベント ハンドラーを定義しました。

App.ApplicationRoute = Ember.Route.extend({
    events: {
        exceptionHandler: function (exception) {
            this.controllerFor('exceptions').addObject(exception);
        }
    }
});

ExceptionsControllerの単なる拡張ですArrayController

App.ExceptionsController = Ember.ArrayController.extend();

最後に、メインのアプリケーション テンプレートのどこかで使用します。

{{render 'exceptions'}}

テンプレはご想像にお任せします。

編集

次に、例外を発生させたい場合sendは、コントローラーまたはルートの任意の場所でアクションを起動するために使用します。

this.send('exceptionHandler', exception);

カスタムモデルは例外です。

このソリューションの利点は、アプリケーション ルートの下の他のルートまたは任意のコントローラーでハンドラーをオーバーライドできることです。

于 2013-04-23T23:38:42.197 に答える