html - change - ng-href angularjs
$ window.location.href NO FUNCIONA en AngularJS (7)
Estoy construyendo una página básica de inicio de sesión de AngularJS y $ window.location.href no redirigió la página a un nuevo html en mi sistema, alojado por WAMP. Incluso intenté redirigirlo a google. No pasa nada. Intenté todas las soluciones disponibles aquí y nada parece funcionar. Alguna solución?
JS seguido de 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>
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) {
});
}
});
Angular tiene su propio controlador de ubicación llamado $location
que prefiero usar en la aplicación angular;
app.controller(''MainCtrl'', function($scope, $location) {
inyecte a su controlador y use de la siguiente manera;
$location.path(''http://foo.bar'')
Puede usar $window.location.href
en AngularJS
app.controller(''MainCtrl'', function ($scope,$window) {
$scope.formData = {};
$scope.submitForm = function (formData){
$window.location.href = "jobs";
};
})
Vale la pena señalar la documentación actual para $location
. Específicamente la cita:
¿Cuándo debería usar $ location?
Cada vez que su aplicación necesite reaccionar ante un cambio en la URL actual o si desea cambiar la URL actual en el navegador.
¿Qué no hace?
No causa una recarga de página completa cuando se cambia la URL del navegador. Para volver a cargar la página después de cambiar la URL, use la API de nivel inferior, $ window.location.href.
Si necesita redirigir el navegador a una nueva página, definitivamente se recomienda $ window.location.
Mis dos centavos -
No pude obtener $window.location.href
o $location.path
para trabajar para navegar desde una página. En la documentación de $location
(bajo advertencias ) dice:
El servicio $ location le permite cambiar solo la URL; no te permite volver a cargar la página. Cuando necesite cambiar la URL y volver a cargar la página o navegar a otra página, use una API de nivel inferior, $ window.location.href.
La documentación de $ window es ... deficiente. De todos modos, ninguno de los servicios funcionó para mí en el controlador (aunque $ location.path funciona en mi archivo index.run
).
En este proyecto estoy usando ui-router, por lo que funcionó: $state.go(''state.name'');
- donde state.name es la cadena del estado / nombre de la página a la que el usuario quiere ir, es decir, ''index.users''
En js angulares puedes usar $location
. Inyectarlo en su controlador:
app.controller(''MainCtrl'', function($scope, $location) { ... }
Y si quieres redirigir a google utiliza su método url()
:
$location.url(''http://google.fr'');
también puedes usar el método path()
para la URL relativa:
$location.path(''home''); // will redirect you to ''yourDomain.xx/home''
https://docs.angularjs.org/api/ng/service/ $ location
window.location.href = "path name";
return false;