2012-09-21 18 views
25

tengo el siguiente requisito: debe mostrarse una lista para todos los elementos con el enlace editar y eliminar. cuando el usuario hace clic en editar, el formulario de edición debe aparecer con cuadros de texto y un botón de guardar. ahora, cuando el usuario edita los datos y hace clic en el botón Guardar, los datos deben guardarse y la página de listado debe aparecer nuevamente con los datos modificados. todo funciona bien, pero ¿cómo puedo volver a dirigirme a la página de la lista a través del enrutamiento en angularjs? a continuación es una parte del código:redirigir mediante el enrutamiento en angularjs

controlador de encaminamiento:

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

formulario de edición:

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

cómo vuelvo a dirigir a la misma página del anuncio?

Respuesta

59

Necesita inyectar el servicio $location en su controlador editCtrl.

Luego, en su función de guardar, agregue lo siguiente para hacer la redirección (tenga en cuenta que la ruta coincide con su ruta).

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

This Youtube video también podría ayudarle.

+0

intenté esto pero luego la página se vuelve a cargar. No quiero que la página se vuelva a cargar. ¿Qué más es la opción? – z22

+0

Consulte https://groups.google.com/d/topic/angular/eegk_lB6kVs/discussion, donde la recomendación es almacenar los datos en un servicio y tener un envoltorio alrededor de ellos de manera que cuando el controlador se reinicialice (cuando vuelve a la página por segunda vez), el contenedor decide si debe devolver los datos en caché o realizar una solicitud Ajax. –