非常に基本的なEmber.StateManagerの構築を開始し、正確なcurrentStateの取得に問題があります。私の理解では、状態のenterコールバックが実行されるまでに、currentState.name
この新しい状態を反映する必要があります。
私はember-1.0.0-pre.2.min.jsを使用しています
これが私の問題です:
My.Tabs = {
init: function() {
MY.Tabs.stateManager.transitionTo('about');
// this logs 'about' which is correct
console.log(this.stateManager.get('currentState.name'));
},
stateManager: Em.StateManager.create({
enableLogging: true,
start: Em.State.create({
exit: function(stateManager) {
// this logs 'start'
console.log(stateManager.get('currentState.name');
}
}),
about: Em.State.create({
enter: function(stateManager) {
// ###### HERE's THE PROBLEM ######
// this logs 'start'...at this point shouldn't this be 'about'?
// since I'm already in the enter callback?
console.log(stateManager.get('currentState.name');
},
exit: function(stateManager) {
return console.log("On about exit");
}
})
})
};
ご覧のとおり、呼び出しtransitionTo('about')
てその状態のenter
コールバックが実行されるとcurrentState.name
、元の状態が反映されstart
ます。
正確なのはtransitionTo('about')
私の後だけです。currentState.name
私の期待は間違っていますか、それとも私は何か間違ったことをしていますか?
ドキュメントには次のように記載されています。
新しい状態に遷移した後、新しいcurrentStateには、StateManagerインスタンスを最初の引数として呼び出したenterメソッドと、遷移を表すオブジェクトを2番目の引数として呼び出します。
ありがとう!