$ window.location.href不在AngularJS中工作

时间:2015-12-01 10:19:35

标签: html angularjs login window.location

我正在构建一个基本的 AngularJS 登录页面, $ window.location.href 没有将页面重定向到我系统中的新html ,由WAMP主办。我甚至尝试将它重新指向谷歌。什么都没发生。我在这里尝试了所有可用的解决方案,似乎没有任何效果。有解决方案吗

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>
&#13;
&#13;
&#13;

6 个答案:

答案 0 :(得分:4)

在角度js中,您可以使用$location。将其注入控制器:

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

如果您想重定向到谷歌使用其url()方法:

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

你也可以使用path()方法获取相对网址:

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

https://docs.angularjs.org/api/ng/service/ $位置

答案 1 :(得分:3)

值得注意$client = new SoapClient(NULL, array( 'location' => 'http://myUri.com', 'uri' => 'http://namespace.com/producer', 'use' => SOAP_LITERAL, )); 的{​​{3}}。特别是引用:

  

我应该何时使用$ location?

     

任何时候您的应用程序需要对当前URL中的更改做出反应,或者您想要在浏览器中更改当前URL。

     

它不做什么?

     

更改浏览器URL时,不会导致整页重新加载。要在更改URL后重新加载页面,请使用较低级别的API $ window.location.href。

如果您需要将浏览器重定向到新页面,建议使用$ window.location。

答案 2 :(得分: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) {

        });
    }
});

答案 3 :(得分:0)

Angular有自己的名为$location的位置处理程序,我更喜欢在angular app中使用;

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

注入您的控制器并使用如下;

$location.path('http://foo.bar')

答案 4 :(得分:0)

您可以在AngularJS中使用$window.location.href

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

答案 5 :(得分:0)

我的两分钱 -

我无法让$location.path$location离开页面。在index.run的文档中(在警告下),它说:

  

$ location服务允许您仅更改URL;它不允许您重新加载页面。当您需要更改URL并重新加载页面或导航到其他页面时,请使用较低级别的API,$ window.location.href。

$location Caveats

$ window的文档是......缺乏。无论如何,这两种服务都不适用于控制器(尽管$ location.path在我的$state.go('state.name');文件中有效)。

在这个项目中,我使用的是ui-router,所以这样做有效: 'index.users' - 其中state.name是用户想要去的州/页面名称的字符串,即plt.figure(figsize=(8,4))