1

Emberjsにインスパイアされた: ルーターの条件付きリダイレクトEmber ルーターで一時的な状態を使用できると思いました。それがその質問の「インデックス」ルートであるためです。入力され、新しいイベントがトリガーされることなく、すぐに別の状態に遷移します。

次のコード (アクション トリガー) を使用して目的の効果を得ることができますtransitionTwiceが、URL は逆の順序で更新され、アプリが正しい順序で状態を通過し、予想される最後の状態で終わるにもかかわらず、最初の状態のままになります。

App.Router = Ember.Router.extend({
    enableLogging: true,

    root: Ember.Route.extend({

        transitionTwice:  Ember.Route.transitionTo('twiceStep1'),

        index: Ember.Route.extend({
            route: '/',
        }),

        twiceStep1: Ember.Route.extend({
            route: '/twiceStep1',

            connectOutlets: function (router) {
                router.transitionTo('twiceStep2');
            }
        }),
        twiceStep2: Ember.Route.extend({
            route: '/twiceStep2',
        })
    })
}),
App.initialize();

コンソール出力は、正しい状態変化を示しています。

STATEMANAGER: Sending event 'transitionTwice' to state root.
STATEMANAGER: Entering root.twiceStep1
STATEMANAGER: Entering root.twiceStep2

ただし、URL は次のようになります。

...test2.html#/twiceStep1

誰かが私が間違っていることを見つけることができますか?

ありがとう、ジョン。

4

1 に答える 1

1

transitionTo()で 2 番目の呼び出しをラップすることで、これを正常に機能させることができましたEmber.run.next()

Ember.run.next(function () {
    router.transitionTo('twiceStep2');
});

問題は、すべてのトランジションで、呼び出しの完了後に URL が更新されることです。connectOutlets()これは、ネストtransitionToからconnectOutletsの連鎖呼び出しと、呼び出しが完了すると URL が逆の順序で更新されることを意味します。

これは私の差し迫った問題を修正しますが、これが実際に質問に対する最終的な答えを構成するかどうかはわかりません。これは、最終状態が以前の一時的な状態から入るという知識を持っている必要があることを意味するためです-これは良い分離ではありません. しかし、他の誰かがこの異常に苦しんでいる場合に備えて、記録する必要があると思いました.

于 2012-10-02T12:17:39.847 に答える