2016-03-30 8 views
0

Ich benutze angular UI Router und nicht HTML5-Modus verwenden. Unten ist die Router-Konfiguration. Ich verwende verschachtelte Ansichten für jeden Schritt einer Auftragsbearbeitungs-App. Jeder Schritt des Bestellvorgangs hängt vom vorherigen Schritt ab Mein Problem ist, dass beim Aktualisieren des Browsers in Schritt 2 oder Schritt 3 des Bestellvorgangs; alle Eingabedaten verloren, und so möchte ich den Benutzer paraphieren Schritt 1 des BestellprozessesAngularJs: Browser des Browsers aktualisieren, zum ersten untergeordneten Status wechseln?

$stateProvider 
     .state('wizard', { 
      url: "/wizard", 
      templateUrl: 'template/newOrder.cshtml', 
      controller: 'createOrderController', 
      controllerAs: 'vm', 
      data: { pageTitle: 'Wizard form' } 
     }) 
     .state('wizard.step_one', { 
      url: '/step_one', 
      templateUrl: 'template/step1.cshtml', 
      controller: 'orderStep1Controller', 
      controllerAs:'vm', 
      data: { pageTitle: 'Wizard form' } 
     }) 
     .state('wizard.step_two', { 
      url: '/step_two', 
      templateUrl: 'template/step2.cshtml', 
      controller: 'orderStep2Controller', 
      controllerAs: 'vm', 
      data: { pageTitle: 'Wizard form' } 
     }) 
     .state('wizard.step_three', { 
      url: '/step_three', 
      templateUrl: 'template/step3.cshtml', 
      controller: 'orderStep3Controller', 
      controllerAs: 'vm', 
      data: { pageTitle: 'Wizard form' } 
     }) 
    .state('wizard.step_four', { 
     url: '/step_four', 
     templateUrl: 'template/step4.cshtml', 
     controller: 'orderStep4Controller', 
     controllerAs: 'vm', 
     data: { pageTitle: 'Wizard form' } 
    }) 
    ; 

Grüße umgeleitet werden,

+0

Erstellen Sie einen Dienst, der die Eingabedaten überprüft, wenn der Controller geladen wird, und wenn die Validierung fehlschlägt, senden Sie sie an Schritt 1. ODER verwenden Sie lokalen Speicher/Cookies, um ihre Daten zu speichern – Ronnie

Antwort

0

ich davon aus bin, dass der /wizard Zustand eigentlich nichts zu tun anders als die verschachtelten Ansichten zu halten.

Sie müssen möglicherweise um ein paar Dinge zu ändern, es eine abstrahierte Darstellung zu machen, einschließlich aller Staaten zu halten, die neworder.cshtml seinen eigenen Zustand zu ändern:

.state('wizard', { 
     url: "/wizard", 
     abstract: true, 
     templateUrl: 'template/newOrder.cshtml', 
     controller: 'createOrderController', 
     controllerAs: 'vm', 
     data: { pageTitle: 'Wizard form' } 
    }) 

Weitere ausführliche Informationen und wie die Abstraktion kann sein verwendet werden kann Ui-Router GitHub

Es enthält gret Informationen über urlRouterRedirects, die in diesem Fall nützlich sein kann, je nachdem, wann Sie es wollen. Man könnte sagen, wenn Sie auf den Assistenten Ansicht landen (unten zum Beispiel)

$ urlRouterProvider.when ('/ Assistent', '/ wozard/NewOrder') NewOrder zu umleiten;

Wenn Sie es nach einem bestimmten Ereignis abfangen möchten, können Sie auch .otherwise verwenden.

$ urlRouterProvider.otherwise ('/ sonst');

Der/sonst URL auf einem Zustand wie gewohnt definiert werden müssen:

$ stateProvider .state ("sonst", {url: '/ sonst' ...})

+1

Vielen Dank für Ihren Kommentar; Ich habe versucht, Wizard State Abstract und machen Änderungen, die Sie vorgeschlagen, aber es hat nicht funktioniert für mich ... Ich fühle mich in einen Standardzustand beim Aktualisieren des Browsers manuell oder durch F5 würde etwas in UI Router gebacken .. Wird mehr erkunden .. Mit freundlichen Grüßen –

+0

sind Sie offen für die Verwendung der Ui-Router 1.0 Alpha Release? Es verfügt über Übergangshaken, die Sie dazu verwenden können. Wenn ja, lassen Sie es mich wissen, ich werde eine Antwort schreiben. –

Verwandte Themen