2016-09-12 1 views
0

Ich habe eine Ember-Anwendung mit mehreren Objekten auf einer Einstellungsseite. Diese haben eine Reihe von Validierungen, die ich als verschiedene Punkte nenne.Validieren Sie Ember-Objekte vor dem Übergang der Route

Ich habe auch eine Ember {{link-to}} Helfer, die einen Benutzer auf eine Ergebnisseite wechseln ermöglicht.

Ich möchte sicherstellen, dass meine Objekte gültig sind, bevor ich dem Benutzer den Übergang zur Ergebnisseite erlaube.

In Ember 2.0 + konnte ich eine Funktion an eine Schaltfläche binden, anstatt den {{link-to}} Helfer zu verwenden und in der Funktion validieren und transitionToRoute aufrufen.

Ich musste die Ember-Version auf 1.1 zurückgestuft und wieder auf den {{link-to}}-Helfer wegen einiger Drittanbieter-Styling-Bedenken zurückgreifen. Was ist der beste Weg, dies zu tun? in älteren Ember?

Gibt es eine Möglichkeit, eine Funktion vor dem Übergang im {{link-to}} Helfer aufzurufen? Ich konnte keinen finden.

+1

Haben Sie versucht, die beforeModel Route() verwenden Haken? Ich denke, es wäre die bessere Wahl für die Modellvalidierung in Ember 2.x. – lependu

+0

@lependu das macht Sinn, würde die Pseudogogik sein: Überprüfen Sie Modell und Controller Validierung Zustand, wenn pass> sonst nichts tun transitionToRoute (whereWeCameFrom) – dougajmcdonald

+0

Genau. Hier ist ein Beispiel für 2.x: http://emberjs.com/api/classes/Ember.Route.html#method_beforeModel – lependu

Antwort

2

Ich empfehle tanTransition.

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

Dies scheint die Rechnung zu passen, nicht sicher, wie ich dieses erste Mal verpasste: s – dougajmcdonald

Verwandte Themen