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

私がルーターを理解する方法は、それがアプリケーションの状態の表現であるということです。

具体的には、特定の状態が満たされた場合にのみ遷移が発生するようにします。ユーザーが続行する前に、各段階で何かが選択または入力されています。

したがって、ユーザーが何かを入力または選択すると、アプリケーションはルーターによって反映される特定の状態になります。

IMHOビュー(またはコントローラー)では次のようになります。

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