2016-09-12 3 views
0

設定ページに複数のオブジェクトを持つemberアプリケーションがあります。これらは私が様々なポイントとして呼ぶ検証のセットを持っています。経路遷移前にEmberオブジェクトを検証する

私はまた、ユーザーが結果ページに移行できるようにするために、ヘルパーを持っています({{link-to}})。

ユーザーが結果ページに移行する前に、オブジェクトが有効であることを確認したいと思います。

Ember 2.0以上では、{{link-to}}ヘルパーを使用するのではなく、ボタンに関数をバインドできました。この関数では、transitionToRouteを呼び出して呼び出すことができました。

emberバージョンを1.1にダウングレードしてから、一部のサードパーティのスタイリング上の理由から{{link-to}}ヘルパーを使用するように戻しました。これを行う最善の方法は何ですか?古いエムバーで?

{{link-to}}ヘルパーで遷移する前に関数を呼び出す方法はありますか?私は1つを見つけることができなかった。

+1

あなたはルートのbeforeModel()フックを使用しようとしましたか?私はそれがember 2.xでのモデルバリデーションにも良い選択だと思います。 – lependu

+0

@lependu意味がありますが、擬似ロジックは次のようになります:モデルとコントローラの検証状態を渡したら、何もしませんtransitionToRoute(whereWeCameFrom) – dougajmcdonald

+0

まさに。 2.xの例を次に示します:http://emberjs.com/api/classes/Ember.Route.html#method_beforeModel – lependu

答えて

2

私はwillTransitionをお勧めします。

App.FormRoute = Ember.Route.extend({ 


actions: { 
    willTransition: function(transition) { 
     if (this.controller.get('userHasEnteredData') && 
      !confirm("Are you sure you want to abandon progress?")) { 
     transition.abort(); 
     } else { 
     // Bubble the `willTransition` action so that 
     // parent routes can decide whether or not to abort. 
     return true; 
     } 
    } 
    } 
}); 

https://guides.emberjs.com/v1.10.0/routing/preventing-and-retrying-transitions/

+0

これは法案に合うようですが、私はこの最初のラウンドをどのように逃したのか分かりません:s – dougajmcdonald

関連する問題