2012-09-21 6 views
25

Ich habe die folgende Voraussetzung: eine Liste sollte für alle Elemente mit Bearbeiten und Löschen Link angezeigt werden. Wenn der Benutzer auf Bearbeiten klickt, sollte das Bearbeitungsformular mit Textfeldern und einer Schaltfläche zum Speichern angezeigt werden. Wenn der Benutzer nun die Daten bearbeitet und auf die Schaltfläche zum Speichern klickt, sollten die Daten gespeichert werden und die Auflistungsseite sollte erneut mit den geänderten Daten angezeigt werden. alles funktioniert gut, aber die wie leite ich erneut auf die Liste Seite durch Routing in angularjs? unten ist ein Teil des Codes:Umleitung durch Routing in angularjs

Leiteinrichtungskontroller:

angular.module('productapp', []). 
    config(['$routeProvider', function($routeProvider) { 
    $routeProvider. 
     when('/productapp', {templateUrl: 'partials/productList.html', controller: productsCtrl}). 
     when('/productapp/:productId', {templateUrl: 'partials/edit.html', controller: editCtrl}). 
     otherwise({redirectTo: '/productapp'}); 
}]); 

bearbeiten Form:

<div> 
    <form method="POST"> 
    <label>Add New Product:</label> 
     <input type="text" name="keywords" ng-model="product.name" placeholder="enter name..." value="{{product.name}}"> 
     <input type="text" name="desc" ng-model="product.description" placeholder="enter description..." value="{{product.description}}"> 
     <button type="submit" ng-click="save(product.product_id,$event)" >Save</button> 
    </form> 
</div> 

, wie ich auf die gleiche Auflistung Seite umleiten?

Antwort

59

Sie müssen den $location Service in Ihren editCtrl Controller injizieren.

Fügen Sie dann in Ihrer Speicherfunktion Folgendes hinzu, um die Umleitung auszuführen (beachten Sie, dass der Pfad Ihrer Route entspricht).

$scope.save = function (...) { 
    // ... 
    $location.path('/productapp'); 
} 

This Youtube video könnte Ihnen auch helfen.

+0

Ich habe das versucht, aber dann wird die Seite neu geladen. Ich möchte nicht, dass die Seite neu geladen wird. Was ist sonst noch möglich? – z22

+0

Weitere Informationen finden Sie unter https://groups.google.com/d/topic/angular/eegk_lB6kVs/discussion, wo die Empfehlung lautet, die Daten in einem Service zu speichern und einen Wrapper damit zu versehen, damit der Controller neu initialisiert wird (Wenn Sie ein zweites Mal auf die Seite zurückkehren, entscheidet der Wrapper, ob die zwischengespeicherten Daten zurückgegeben oder eine Ajax-Anfrage gestellt werden sollen. –