我開始構建一個非常基本的Ember.StateManager,並且在獲取準確的currentState時遇到問題。我的理解是,當一個州進入回調時,currentState.name
應該反映這個新的狀態。Ember StateManager不準確地反映currentState
我使用燼-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實例作爲第一個參數,並表示所述過渡作爲第二個參數的對象輸入方法。
謝謝!
這是我的下一步,檢查源代碼。謝謝你快速的回覆!我覺得這些文檔有點誤導性,因爲當你進入'currentState'的時候,它已經改變了。無論如何,還有一個'setup'回調函數,它在'enter'之後被調用並且具有新的狀態名稱。 – djibouti33
@ djibouti33如果您可以改進,請提交文檔更改的拉取請求。 –