0

我使用http://emberjs.com/guides/outlets/#toc_the-router中的示例在我的应用程序中设置了一些基本路由

在根目录中,我有一些从视图操作触发的事件,例如:

gotoStepOne: Ember.Route.transitionTo('stepOne'),
gotoStepTwo: Ember.Route.transitionTo('stepTwo'),
gotoStepThree: Ember.Route.transitionTo('stepThree'),
gotoStepFour: Ember.Route.transitionTo('stepFour'),
gotoStepFive: Ember.Route.transitionTo('stepFive'),

完整示例路由器代码位于http://jsfiddle.net/hellosmithy/WdjXT/

目前这一切都很好。问题是我想在这些事件中添加其他代码。例如:

gotoStepOne: function() {
    if (someCondition) {
        Ember.Route.transitionTo('stepOne');
    }
    someOtherFunction();
}

但是,这样做会破坏路由而不会引发任何错误。它只是不再过渡。

具体来说,我只希望在满足某个状态时发生转换——用户在每个阶段都选择或输入了某些内容,然后才能继续。是否有解决方法,或者我应该在其他地方抽象这个功能?

4

1 回答 1

1

我理解路由器的方式是,它是应用程序状态的表示。

具体来说,我只希望在满足某个状态时发生转换——用户在每个阶段都选择或输入了某些内容,然后才能继续。

因此,用户输入或选择某些内容会使您的应用程序处于某种状态,该状态由路由器反映。

恕我直言,在视图(或控制器)中应该是这样的:

userDidSomething: function(condition) {
  if (condition) {
    App.get('router').send('stepOne');
  }else{
    someOtherFunction();
  }
}
于 2012-08-14T11:50:54.573 回答