2

アプリケーション ルーティングを使用してすべてのモーダルをレンダリングしようとしていますが、モーダルを閉じた後に前の状態に戻る適切な方法がわかりません。

基本的なセットアップは次のとおりです。

モーダル ダイアログを表示するために使用しているアプリケーション テンプレートにアウトレットがあります。

次のようになります。

{{ outlet modal }}

私のルート マッピングでは、個々のモーダルのフックを定義しました。たとえば、私のヘルプ ダイアログは次のように表示されます。

App.HelpRoute = Ember.Route.extend({
    renderTemplate: function(controller, model) {
        this.render({ outlet: 'modal' });
    }
});

現在、URI を使用してモーダルを表示できます。

   foo.com/#/help

jQueryを使用してモーダルを閉じるフックがあります:

$('#modalHelpWindow').modal('hide');

しかし、要素を隠しているだけなので、これはあまり役に立ちません。解雇時にURIを更新する必要があります。もう一度同じルートをたどると、モーダルはすでに非表示になっていて、表示されません。

モーダルを閉じて、アプリケーションを以前の状態に戻すには、どの方法を使用すればよいですか? history.back() を使用する必要がありますか?

注、私はこのSOの質問を認識していますが、プログラムで作成されたビューにはコントローラーが適切に関連付けられていないため、解決策は推奨される「ember」の方法ではありません Emberルーターv2でモーダル状態に出入りする正しい方法は何ですか?

4

1 に答える 1

2

ビューの didInsertElement メソッドで history.back() 呼び出しを実行するために、非表示のハンドラーをフックできるように見えます。

   didInsertElement: function() {
        var $me = this.$();
        $me.modal({backdrop:"static"});
        $me.on('hidden', function() {
            history.back();
        });
    },
于 2013-03-07T23:52:20.403 に答える