2015-12-01 4 views
6

Я строй основного 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 == "[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 с символом '$'. ** window.location.href = "[email protected]" ** – Niklas

+0

Используйте базовое окно JavaScript для переадресации .. это без $. window.location.href. – Amarnath

+0

Это сработало. Спасибо :) Но почему он не работает со знаком доллара? –

ответ

2

В угловых 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

+1

False. Вы не «должны использовать»; Вы можете использовать. Не обязательно использовать $ location только потому, что это услуга. В зависимости от ситуации вы используете window.location без проблем. – JonyD

+0

См. Ответ Джима Гриммета. Это кажется более точным. –

0

Угловая имеет свой собственный обработчик расположения имени $location, который я предпочитаю использовать в угловом приложении;

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

введите ваш контроллер и используйте его следующим образом:

$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

Возможно, ваш код не работает, потому что вы не объявляете $ window в параметрах контроллера –

3

Стоит отметить current documentation за $location. В частности, цитата:

Когда следует использовать $ location?

Каждый раз, когда ваше приложение должно реагировать на изменение текущего URL-адреса или если вы хотите изменить текущий URL-адрес в браузере.

Что это не делается?

Это не приводит к полной перезагрузке страницы при изменении URL-адреса браузера. Чтобы перезагрузить страницу после изменения URL-адреса, используйте API нижнего уровня, $ window.location.href.

Если вам необходимо перенаправить браузер на новую страницу, рекомендуется использовать $ window.location.

0

Вы можете использовать $window.location.href в AngularJS

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

Мои два цента -

Я не мог получить $window.location.href или $location.path работать, чтобы перейти от страницы.В документации к $location (под предостережений) он говорит:

в $ служба расположение позволяет изменить только URL; он не позволяет перезагружать страницу. Когда вам нужно изменить URL-адрес и перезагрузить страницу или перейти на другую страницу, используйте API нижнего уровня, $ window.location.href.

$location Caveats

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

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

Смежные вопросы