1

ログインしたユーザーのセッションを管理するための Ember.StateManager があります。initialState プロパティを設定するために、ユーザーがページにアクセスしたときにログインしているかどうかを検出するにはどうすればよいですか? (以前にログインしていて、まだ Cookie を持っている可能性があるため)

App.userSessionStateManager = Em.StateManager.create({
    initialState: 'signedout', // this should be dynamic

    signedin: Em.State.createWithMixins({
        enter: function(sm) {
            this._super(sm);
            console.log('entered signedin state');
        },
        exit: function(sm) {
            this._super(sm);
            console.log('exited signedin state');
        }
    }),

    signedout: Em.State.createWithMixins({
        enter: function(sm) {
            this._super(sm);
            console.log('entered signedout state');
        },
        exit: function(sm) {
            this._super(sm);
            console.log('exited signedout state');
        }
    }),
});
4

1 に答える 1

1

Ember.js の多くのクラスと同様に、独自のinit()関数を作成して独自の設定を行うことができます。このようにして、initialState プロパティを何に設定するかを決定できます。ただし、デフォルトの初期化も実行できるようinit()に、親クラスの関数を呼び出すようにしてください。this._super()

編集: Ember.js API の最近の更新以来、関数を呼び出すためcreateWithMixins()だけに代わりに使用する必要があります。create()_super

App.userSessionStateManager = Em.StateManager.createWithMixins({
    init: function() {
        this._super();

        // your login detection routine here
        if (user.signedin)
            this.initialState = 'signedin';
        else
            this.initialState = 'signedout';
    },

    // ...
});
于 2012-12-07T13:32:37.600 に答える