我正在处理的应用程序包含各种状态(使用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.open到window.location.href的所有操作,无论我尝试了什么操作,都不会发生重定向。
编辑(已解决):
找到了问题。
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
变量LandingUrl设置为“ domain.com/login”,该变量与$
window.location.href一起不起作用(这是我尝试的操作之一)。但是将代码更改为
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
现在可以使用了。
我相信这样做的方法是 $location.url('/RouteTo/Login');
编辑清晰度
假设我的登录视图的路线是/Login
,我想$location.url('/Login')
导航到该路线。
对于Angular应用之外的位置(即未定义路线),可以使用普通的旧JavaScript:
window.location = "http://www.my-domain.com/login"
问题内容: 我正在测试以下AngularJS $ location。我不是这个问题。只想检查重定向是否有效: HTML AngularJS代码 问题答案: $ location不能帮助您使用外部URL,请改用$ window服务: 请注意,您可以使用window对象,但这是不好的做法,因为$window可以轻松模拟,而window不能。
主要内容:一、Window Location,二、Window Location Href,三、Window Location Pathname,四、Window Location Assignwindow.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。 一、Window Location window.location 对象在编写时可不使用 window 这个前缀。 一些例子: 一些实例: location.hostname 返回 web 主机的域名 l
这是我第一次面对这个问题,但想不出原因。 我正在使用d3创建一个冰柱图。 有一个click事件正在激发并调用。我看到控制台日志,这意味着我确实有权访问,但当我尝试设置它时,什么也没有发生:没有新页面,没有错误页面,什么也没有!
问题内容: 我正在尝试使用以下方法重定向到另一条路线: 但是由于某种原因,它不起作用。我使用jQuery- UI做了一个自动完成的小部件,一旦用户选择了一个选项,我就从作用域调用了一个函数。我调试了它,然后它进入了函数,但它从未重定向到其他路由。当我按下一个键时,它只会改变路线。 我认为这很奇怪,但是我还没有弄清楚如何解决这个问题。我用了 它可以工作,但我想使用该功能。 有人知道为什么会这样吗?
问题内容: 我在应用中使用angularjs http服务,并且在网站上注意到了这一点: 如果AJAX调用成功(服务器发送回200至209之间的HTTP代码),则将执行传递给success()函数的函数。如果AJAX调用失败(除重定向以外的所有其他代码),则执行传递给error()方法的函数。 显然,重定向状态代码既不是成功也不是错误回调的一部分。那么我们将如何处理重定向? 这就是我的脚本所做的,
这是因为一些只兼容客户端的脚本被打包进了服务端的执行脚本中去。 对于只适合在客户端运行的脚本,需要通过使用 process.client 变量来判断导入。 举个例子, 在你的 .vue 文件中: if (process.client) { require('external_library') }