在当前的runloop完成之前,Ember子状态不可用

时间:2012-06-02 14:12:04

标签: ember.js

我有以下子状态定义:

App.ChildState = Ember.State.create({
  enter: function(manager) {
     //do stuff
  },
  start: Ember.ViewState.create({
    view: App.LoadingView,
    enter: function(manager) {
      this._super(manager);

      // manager cannot find the child otherstate
      manager.transitionTo('otherstate.index');
    }
  }),
  otherstate: App.OtherState

除非我在Ember.run.next中包含这样的调用,否则管理员找不到其他孩子:

Ember.run.next(function(){
   manager.transitionTo('otherstate.index');
});

有谁能让我知道为什么这个延迟对于经理能够找到这个子状态并转换到它是必要的?

1 个答案:

答案 0 :(得分:2)

让状态的enter方法触发转换是不合适的设计。您应该使用操作来执行任何条件状态转换。