我出于自己的需要复制了这个登录示例。它运行良好。但我在问自己:为什么我需要这Ember.run.later(this, this._serverLogin, 100);
条线?就像评论说的那样,它只是为了模拟延迟。行。但是,如果我将其更改为:
// Create the login controller
MyApp.loginController = Ember.Object.create({
username: '',
password: '',
isError: false,
tryLogin: function() {
if(this.get('username') === MyApp.USERNAME &&
this.get('password') === MyApp.PASSWORD) {
this.set('isError', false);
this.set('username', '');
this.set('password', '');
MyApp.stateManager.send('loginSuccess');
} else {
this.set('isError', true);
MyApp.stateManager.send('loginFail');
}
},
});
没有Ember.run.later(this, this._serverLogin, 100);
,我得到Uncaught Error: <Ember.StateManager:ember270> could not respond to event loginSuccess in state loggedOut.awaitingCredentials.
所以我想可能我需要这个延迟才能让 stateManager 在之前或类似的东西发生变化。但是当我运行旧代码时Ember.run.later(this, this._serverLogin, 0);
它仍然有效。那么,有什么不同呢?ember的文档没有给出任何提示。