web-dev-qa-db-fra.com

Rediriger vers une autre page après POST en utilisant AngularJS

Après avoir cherché et trouvé une solution, je publie cet extrait de code pour vous aider.

$scope.createAddress = function () {
    $http({
        method: 'POST',
        url: '/addressBook/api/Person',
        data: $scope.person,
        headers: {
            'Content-Type': 'application/json; charset=utf-8'
        }
    }).success(function (data) {
        $location.path('/addressBook');
    });
}

Après avoir posté avec succès, je voudrais rediriger vers une autre page. $ location.path n'accomplit pas cela. J'ai essayé $ scope.apply () car d'autres ont eu du succès avec ça. Est-ce que je manque quelque chose ou je ne comprends pas à quoi sert $ location? Le code est frappé.

13
Dennis Kiesel

Il devrait y avoir quelque chose d'écoute sur ce changement de chemin, comme un $routeProvider. Est-ce le cas?

Si vous avez besoin d'un rechargement complet de la page sur cette autre route (côté serveur), essayez $window.location.href.

10
Jair Trejo

N'oubliez pas d'injecter la dépendance au contrôleur:

                                                       |-- inject!
angular.module('myApp.controllers', []).               v
controller('AddressController', function ($scope, $location, $http) {
  $http({
    method: 'POST',
    url: '/addressBook/api/Person',
    data: $scope.person,
    headers: {
        'Content-Type': 'application/json; charset=utf-8'
    }
  }).success(function (data) {
    $location.path('/addressBook');
  });
});
22
Sgnl

dans votre contrôleur, ajoutez le $ location. comme ceci Ex: app.controller ('yourController', fonction ($ scope, $ location, $ http, etc ...) puis sur votre $ http devrait être comme ça.

$http({.... }).success(function(response) { $location.path('/your path')})

mais assurez-vous que vous devez ajouter un emplacement supplémentaire à votre configuration $ routeProvider. quelque chose comme: 

app.config(['$routeProvider', 
   function($routeProvider) { 
   $routeProvider.
     when('/yournewlocation', {
      templateUrl: 'yourTemplate/yourpage'
   })
  }
])

c'est tout. Eh bien, vous savez de quoi je parle.

1
Joshua Fabillar
.controller('regCtrl', ['$scope','$http', function($scope,$http) {

        $scope.submit = function() {
            alert("vf");

            $http.post("http://localhost:3000/insert",function(response,$location){
                if(response!= null){
                $location.path("/login");
            }
            else{
                $state.go('/register');
            }
            });
            }

            }]);

mon code est comme ceci je reçois seulement la réponse de JSON après la page d'enregistrement sa ne navigue pas vers une autre page

0
user8747664