$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'

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

Стоит отметить текущую документацию для $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.

$location Предостережения

Документация для $window... отсутствует. Несмотря на это, ни одна из служб не работала у меня в контроллере (хотя $location.path работает в моем index.run файл).

В этом проекте я использую UI-роутер, поэтому это сработало:$state.go('state.name'); - где state.name - строка названия состояния / страницы, в которую пользователь хочет перейти, т.е. 'index.users'

Другие вопросы по тегам