2015-12-01 19 views
6

Sto costruendo una AngularJS pagina di base Login e la $ window.location.href non reindirizzare la pagina per un nuovo html nel mio sistema, ospitato da WAMP. Ho persino provato a ri-indirizzarlo a google. Non accade nulla. Ho provato tutte le soluzioni disponibili qui e niente sembra funzionare. Qualche soluzione?

JS seguita da HTML

var app = angular.module('myApp', []); 
 

 
app.controller('MainCtrl', function($scope) { 
 
    $scope.name = 'World'; 
 

 

 
    $scope.submit = function() { 
 
    if ($scope.username && $scope.password) { 
 
     var user = $scope.username; 
 
     var pass = $scope.password; 
 
     if (pass == "admin" && user == "[email protected]") { 
 
     alert("Login Successful"); 
 
     $window.location.href = "http://google.com"; //Re-direction to some page 
 
     } else if (user != "[email protected]") { 
 
     alert("Invalid username"); 
 
     } else if (pass != "admin" && user == "[email protected]") { 
 
     alert("Invalid password"); 
 
     } 
 
    } else { 
 
     alert("Invalid Login"); 
 
    } 
 
    } 
 

 

 
});
<!DOCTYPE html> 
 
<html ng-app="myApp"> 
 

 
<head> 
 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
    <script src="login.js"></script> 
 
    <link rel="stylesheet" href="login.css"> 
 
</head> 
 

 
<body ng-controller="MainCtrl"> 
 
    <form> 
 
    <label>Username:</label> 
 
    <input type="email" ng-model="username" class="lab1" /> 
 
    </br> 
 
    </br> 
 
    <label></label>Password:</label> 
 
    <input type="password" ng-model="password" class="lab2"> 
 
    </br> 
 
    <button type="submit" ng-click="submit()" class="buttonclass">login</button> 
 
    </form> 
 
</body> 
 

 
</html>

+0

Try senza il segno '$'. ** window.location.href = "[email protected]" ** – Niklas

+0

Usa il reindirizzamento della finestra Javascript di base .. cioè senza $. window.location.href. – Amarnath

+0

Ha funzionato. Grazie :) Ma perché non funziona con il simbolo del dollaro? –

risposta

2

In js angolare è possibile utilizzare $location. Iniettarlo nel controller:

app.controller('MainCtrl', function($scope, $location) { ... } 

E se si desidera reindirizzare a Google di utilizzare la sua url() metodo:

$location.url('http://google.fr'); 

è anche possibile utilizzare path() metodo per la relativa url:

$location.path('home'); // will redirect you to 'yourDomain.xx/home' 

https://docs.angularjs.org/api/ng/service/ $ posizione

+1

Falso. Non "devi usare"; Puoi usare. Non è obbligatorio utilizzare $ location solo perché è un servizio. A seconda della situazione, si utilizza window.location senza problemi. – JonyD

+0

Vedi la risposta di Jim Grimmett. Sembra essere più preciso. –

0

angolare dispone di un proprio gestore di posizione denominata $location che io preferisco utilizzare in app angolare;

app.controller('MainCtrl', function($scope, $location) { 

iniettare sul controller e utilizzare come segue;

$location.path('http://foo.bar') 
1
Try this, 

var homeApp = angular.module('HomeApp', []); 

homeApp.controller('HomeController', function ($scope, $http, $window) { 
    $scope.loginname = "Login To Demo App"; 
    $scope.login = function() { 

     var name = $scope.username; 
     var pwd = $scope.password; 
     var req = { 
      method: 'POST', 
      url: '../Account/LoginAccount', 
      headers: { 
       'Content-Type': undefined 
      }, 
      params: { username: name, password: pwd } 
     } 

     $http(req).then(function (responce) { 

      var url = ''; 
      if (responce.data == "True") { 
       url = '../Account/WelcomePage'; 
       $window.location.href = url; 
      } 
      else { 
       url = '../Account/Login'; 
       $window.location.href = url; 
      } 
     }, function (responce) { 

     }); 
    } 
}); 
+0

Forse il tuo codice non funziona, perché non stai dichiarando $ window nei parametri del controller –

3

Vale la pena notare il current documentation per $location. Specificamente la citazione:

Quando dovrei usare $ posizione?

Ogni volta che l'applicazione deve reagire a una modifica nell'URL corrente o se si desidera modificare l'URL corrente nel browser.

Cosa non funziona?

Non provoca il ricaricamento di una pagina intera quando l'URL del browser viene modificato. Per ricaricare la pagina dopo aver modificato l'URL, utilizzare l'API di livello inferiore, $ window.location.href.

Se è necessario reindirizzare il browser a una nuova pagina, $ window.location è decisamente consigliato.

0

È possibile utilizzare $window.location.href in AngularJS

app.controller('MainCtrl', function ($scope,$window) { 
    $scope.formData = {}; 
    $scope.submitForm = function (formData){ 
    $window.location.href = "jobs"; 
    }; 
    }) 
0

I miei due centesimi -

non ho potuto ottenere $window.location.href o $location.path a lavorare per navigare lontano da una pagina.Nella documentazione per $location (sotto avvertimenti) si dice:

Il $ servizio di localizzazione consente di modificare solo l'URL; non ti permette di ricaricare la pagina. Quando è necessario modificare l'URL e ricaricare la pagina o navigare verso una pagina diversa, utilizzare un'API di livello inferiore, $ window.location.href.

$location Caveats

Documentazione per $ finestra è ... manca. Indipendentemente da ciò, nessuno dei servizi ha funzionato per me nel controller (sebbene $ location.path funzioni nel mio file index.run).

In questo progetto sto utilizzando ui-router, in modo da fare questo ha funzionato: $state.go('state.name'); - dove state.name è la stringa del nome dello stato/pagina a cui l'utente vuole andare, cioè 'index.users'

Problemi correlati