$window.location.href НЕ РАБОТАЕТ в AngularJS
Я создаю базовую страницу входа в AngularJS, и $ window.location.href не перенаправил страницу на новый html в моей системе, размещенный на WAMP. Я даже пытался перенаправить его в Google. Ничего не произошло. Я перепробовал все доступные здесь решения, но ничего не помогло. Какие-либо решения?
JS сопровождается 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 == "admin@admin.com") {
alert("Login Successful");
$window.location.href = "http://google.com"; //Re-direction to some page
} else if (user != "admin@admin.com") {
alert("Invalid username");
} else if (pass != "admin" && user == "admin@admin.com") {
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>
6 ответов
В угловых JS вы можете использовать $location
, Введите его в свой контроллер:
app.controller('MainCtrl', function($scope, $location) { ... }
И если вы хотите перенаправить в Google, используйте его url()
метод:
$location.url('http://google.fr');
Вы также можете использовать path()
метод для относительного URL:
$location.path('home'); // will redirect you to 'yourDomain.xx/home'
Стоит отметить текущую документацию для $location
, Конкретно цитата:
Когда я должен использовать $location?
Каждый раз, когда ваше приложение должно реагировать на изменение текущего URL или если вы хотите изменить текущий URL в браузере.
Что это не делает?
Это не приводит к полной перезагрузке страницы при изменении URL браузера. Чтобы перезагрузить страницу после изменения URL, используйте API более низкого уровня, $window.location.href.
Если вам нужно перенаправить браузер на новую страницу, определенно рекомендуется $ window.location.
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) {
});
}
});
Ты можешь использовать $window.location.href
в AngularJS
app.controller('MainCtrl', function ($scope,$window) {
$scope.formData = {};
$scope.submitForm = function (formData){
$window.location.href = "jobs";
};
})
Angular имеет свой собственный обработчик местоположения с именем $location
который я предпочитаю использовать в угловом приложении;
app.controller('MainCtrl', function($scope, $location) {
впрысните в свой контроллер и используйте следующим образом;
$location.path('http://foo.bar')
Мои два цента -
Я не мог получить $window.location.href
или же $location.path
работать, чтобы перейти от страницы. В документации для $location
(под предостережениями) это говорит:
Служба $location позволяет изменять только URL; это не позволяет вам перезагрузить страницу. Если вам нужно изменить URL-адрес и перезагрузить страницу или перейти на другую страницу, используйте API более низкого уровня, $window.location.href.
Документация для $window... отсутствует. Несмотря на это, ни одна из служб не работала у меня в контроллере (хотя $location.path работает в моем index.run
файл).
В этом проекте я использую UI-роутер, поэтому это сработало:$state.go('state.name');
- где state.name - строка названия состояния / страницы, в которую пользователь хочет перейти, т.е. 'index.users'