2016-03-30 9 views
0

In meinem Code location.path ("# /") funktioniert nicht Ich hatte viel versucht, aber ich verstehe nicht, warum es nicht funktioniert. Es gibt eine einfache Logik, dass nach der erfolgreichen Anmeldung Popup-Fenster geschlossen ist und das Benachrichtigungsleisten-Plugin benachrichtigt wird.location.path ("# /") funktioniert nicht

Ich schlug in diesem seit 4 Stunden.

Signup

(function() { 
     'use strict' 
     /* 
     * Signup Controller 
     * @param {$scope} Object 
     * @return 
     */ 
     function SignupCtrl($scope, $location, $window, $timeout, UserService, notifications) { 
      //$scope.captchaError=false; 
      //$scope.passwordPattern = '((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{8,})'; 
      $scope.doRegistration = function() { 
       console.log("form validation status:" + $scope.frmSignup.$valid); 
       if (true === $scope.frmSignup.$valid) { 
        console.log("validation successfully executed"); 
        UserService 
          .register($scope.user) 
          .error(function() { 
           angular.element('#btnCancelSignup').triggerHandler('click'); 
           notifications.showError({ 
            message: 'Ooops! there is error occured, please try again.', 
            hideDelay: 1500, //miliseconds 
            hide: true // boolean 
           }); 
           $location.path("#/"); 
          }) 
          .then(function (res) { 
           if (res.data.status === 1) { 
            console.log("success in registration"); 
            angular.element('#btnCancelSignup').trigger('click'); 
            notifications.showSuccess({ 
             message: 'Please check your email to complete registration.', 
             hideDelay: 1500, //miliseconds 
             hide: true // boolean 
            }); 
            $location.path("#/"); 
            if(!$scope.$$phase) $scope.$apply(); 

           } 
           Recaptcha.reload(); 
          }); 
       } 
      } 
     } 

     angular 
       .module('AppWhizbite') 
       .controller('SignupCtrl', ['$scope', '$location', '$window', '$timeout', 'UserService', 'notifications', SignupCtrl]); 
    }()); 
+0

Versuchen Sie, Hash anstelle von Pfad zu bearbeiten. '$ location.hash ('/')' –

+0

@LuisMasuelli: danke für deine Antwort. aber es funktioniert nicht. Es hängt in URL wie folgt an: http: // localhost: 1000/#/#% 2F –

+0

Beachten Sie, dass ich '/' anstelle von '# /' verwendet habe. –

Antwort

0

Versuchen wie folgt

$scope.$apply(function() { 
    $location.path('/'); 
}); 

Hier ist ein weiterer Beitrag, den Sie für ein besseres Verständnis Angular $location.path not working

+0

Ich lese und es versuchte es, aber es funktioniert nicht. Ich habe fast alle Arten angewendet. –

+0

Ashraful: Ich habe einen Fehler, wenn es den gleichen code.Error versucht: [$ rootScope: inprog] $ Digest bereits in Bearbeitung. Ich verwende Stateprovider und möchte die gesamte Seite neu laden. –

+0

Wenn Sie $ stateProvider (ui-router nicht ngRoute) verwenden, sollten Sie $ location.path ('/') durch $ state.go ('/') ersetzen. Noch einmal, Sie haben nicht injiziert und verwendet ngRoute/Ui-Router als Abhängigkeit in app.module und Controller. Bitte klären Sie, ob Sie ngRoute oder Ihren Router verwenden. –

0

Von $location doc lesen könnte:

It does not cause a full page reload when the browser URL is changed. To reload the page after changing the URL, use the lower-level API, $window.location.href.

also, versuchen Sie:

$window.location.href = '/'; 
Verwandte Themen