現在、StateManagerを使用してサーバのセッションチェックに応じてどの状態をアクティブにするべきかを管理するのに問題があります。私は、セッションをチェックし、サインアウト状態またはサインイン状態がアクティブでなければならないかどうかを判断する開始状態を持つと考えました。Ember.jsセッション管理用StateManager
App = Ember.Application.create();
App.sessionController = Ember.Object.create({
signedIn: false,
isSignedIn: function() {
return this.signedIn;
},
signOut: function() {
this.signedIn = false;
App.stateManager.goToState('signedout');
},
signIn: function() {
this.signedIn = true;
App.stateManager.goToState('signedin');
}
});
App.stateManager = Ember.StateManager.create({
start: Ember.State.create({
enter: function(sm) {
this._super(sm);
if (App.sessionController.isSignedIn()) {
sm.goToState('signedin');
} else {
sm.goToState('signedout');
}
}
}),
signedin: Ember.State.create({
enter: function(sm) {
this._super(sm);
console.log('entered signedin state');
},
exit: function(sm) {
this._super(sm);
console.log('exited signedin state');
}
}),
signedout: Ember.State.create({
enter: function(sm) {
this._super(sm);
console.log('entered signedout state');
},
exit: function(sm) {
this._super(sm);
console.log('exited signedout state');
}
})
});
App.sessionController.signIn();
これを実行すると、正しく実行されないexitが発生しているようです。だから私は、認証が必要なEmber.jsアプリケーションの状態を処理するのに好ましい方法(私の見解では間違っていると思われます)は何ですか?
を扱うことができます。問題は、互いの状態の出口プロセスが実行されないことにあります。初期状態の終了プロセスのみが実行されます。これは、ビューが削除されていないViewStateを使用していた場合に発生します。 – digitaltoad
私は理解していない...それはここで働くようです:http://jsfiddle.net/MikeAski/SPfvg/ –
申し訳ありませんが、私はより良い説明をすべきでした、私は開始状態を持っていたので、私は初期状態を使用したアプリの読み込み時に正しい状態にディスパッチします。これは、別の状態の入力プロセス内でgoToStateを使用することによるものと思われる、望ましくない副作用を引き起こしています。私はアプリの読み込み時に正しい状態を決定するコードをどこに置くべきかわかりません。 – digitaltoad