2012-09-21 15 views
25

Mam następujące wymaganie: lista powinna być wyświetlana dla wszystkich pozycji z linkiem do edycji i usuwania. kiedy użytkownik kliknie na edycję, powinien pojawić się formularz edycji z polami tekstowymi i przyciskiem zapisu. teraz, gdy użytkownik edytuje dane i klika przycisk zapisu, dane powinny zostać zapisane, a strona z wykazem powinna pojawić się ponownie ze zmodyfikowanymi danymi. wszystko działa dobrze, ale w jaki sposób mogę ponownie przekierować do strony z listą poprzez routing w angularjs? Poniżej niektóre z kodu:przekierowanie przez routing w angularjs

ROUTING Kontroler:

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'}); 
}]); 

forma edit:

<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> 

jak mogę przekierować do tej samej strony aukcji?

Odpowiedz

59

Należy wprowadzić usługę $location do kontrolera editCtrl.

Następnie w funkcji składowania należy wykonać następujące czynności, aby wykonać przekierowanie (należy zwrócić uwagę, że ścieżka odpowiada trasie).

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

This Youtube video może również pomóc.

+0

Próbowałem tego, ale potem strona została przeładowana. Nie chcę, aby strona została ponownie załadowana. co jeszcze jest tą opcją? – z22

+0

Zobacz https://groups.google.com/d/topic/angular/eegk_lB6kVs/discussion, gdzie zalecenie polega na przechowywaniu danych w usłudze i otacza go otoką tak, aby po ponownym zainicjowaniu kontrolera (gdy wrócisz do strony po raz drugi), opakowanie decyduje, czy zwrócić dane z pamięci podręcznej, czy wykonać żądanie Ajax. –