我开始构建一个非常基本的 Ember.StateManager 并且在获取准确的 currentState 时遇到问题。我的理解是,当一个状态的输入回调运行时,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 将调用其 enter 方法,其中 StateManager 实例作为其第一个参数,一个表示转换的对象作为其第二个参数。
谢谢!