在AngularJS中使用$window或$location来重定向
Using $window or $location to Redirect in AngularJS
我正在开发的应用程序包含各种状态(使用ui-router),其中一些状态要求您登录,其他状态是公开可用的。
我已经创建了一个方法,有效地检查用户是否登录,我目前遇到的问题实际上是在必要时重定向到我们的登录页面。需要注意的是,登录页面目前并没有放在AngularJS应用中。
app.run(function ($rootScope, $location, $window) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
if (toState.data.loginReq && !$rootScope.me.loggedIn) {
var landingUrl = $window.location.host + "/login";
console.log(landingUrl);
$window.open(landingUrl, "_self");
}
});
});
console.log正确显示预期的URL。在这行之后,我几乎尝试了从$window开始的所有内容。打开window.location.href,不管我怎么尝试都没有重定向发生
我相信这是$location.url('/RouteTo/Login');
假设我的登录视图的路由是/Login
,我将使用$location.url('/Login')
来导航到该路由。
对于Angular应用之外的位置(即没有定义路由),普通的旧JavaScript将提供:
window.location = "http://www.my-domain.example/login"
对于整个页面重新加载$window.location.href
似乎是首选的方式。
更改浏览器URL时不会导致整个页面重新加载。要在更改URL后重新加载页面,请使用底层API $window.location.href.
https://docs.angularjs.org/guide/美元位置
它可能对你有帮助!演示
AngularJs代码示例
var app = angular.module('urlApp', []);
app.controller('urlCtrl', function ($scope, $log, $window) {
$scope.ClickMeToRedirect = function () {
var url = "http://" + $window.location.host + "/Account/Login";
$log.log(url);
$window.location.href = url;
};
});
HTML代码示例
<div ng-app="urlApp">
<div ng-controller="urlCtrl">
Redirect to <a href="#" ng-click="ClickMeToRedirect()">Click Me!</a>
</div>
</div>
不确定从什么版本,但我使用1.3.14,你可以使用:
window.location.href = '/employee/1';
不需要在控制器中注入$location
或$window
,不需要获取当前主机地址
你必须写:
& lt; html ng-app ="urlApp ng-controller"="urlCtrl">
这样,angular函数就可以访问到window对象
- 警报中的window.location必须重定向到上一页
- 当用户在选择框中选择选项时,使用window.location.href重定向用户只会更改导航器中URL的最后一位
- 使用 location.href 重定向
- 使用window.location.htm和匹配的URL数组(一个用于桌面,一个用于移动)将桌面网站重定向到移动
- 在Ajax响应后使用window.location.replaces不会立即重定向
- 使用self.location.href重定向不会'不起作用
- 使用window.location.href进行完全重定向
- JQuery Mobile,通过window.location重定向可阻止页面显示事件
- window.location重定向没有'我不在IE8上工作
- 是在window.location重定向后调用的垃圾收集器
- window.location.href 不起作用,无法重定向
- “拒绝影子本机属性的权限”使用 location.replace 在 JavaScript 中重定向
- 在 POST 后使用 Location 标头和 jQuery 重定向
- 为什么用windows.location重定向到新的URL后会有一个额外的对象
- 如何存储用户输入的url(锚链接)并使用window.location重定向用户
- Java脚本没有使用window.location重定向
- 使用$location重定向后获取空数组.在angularJs中
- 正在使用window.location重定向到应用商店
- 在Angular中,如何使用$location重定向.路径为$http.Post success回调
- 是REFERER设置,如果你使用location重定向到一个新的网页.href =