2015-12-01 66 views
6

我建立一個基本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 == "[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

嘗試的字符串沒有'$'符號。 ** window.location.href =「[email protected]」** – Niklas

+0

使用基本的Javascript窗口重定向..即沒有$。 window.location.href。 – Amarnath

+0

它的工作。謝謝:)但爲什麼它不與美元符號一起工作? –

回答

2

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

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

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

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

您還可以使用相對URL path()方法:

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

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

+1

錯誤。你不必「使用」;您可以使用。僅僅因爲它是一種服務,不一定要使用$ location。根據情況,您可以毫無問題地使用window.location。 – JonyD

+0

查看Jim Grimmett的回答。這似乎更準確。 –

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

可以在AngularJS

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

我的兩分錢用$window.location.href -

我不能讓$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'