gpt4 book ai didi

javascript - 第一次加载时出现 Angularjs $on $routeChangeSuccess 错误

转载 作者:行者123 更新时间:2023-11-30 05:39:04 25 4
gpt4 key购买 nike

过去几天我一直在网上搜索,试图弄清楚如何解决这个问题。我不确定我是不是问题的措辞不正确,或者这是一个我似乎看不到的简单解决方案。

我的问题是,在我的 $routeProvider 中,我在每个路由中添加了一个名为“access”的属性,以确定用户是否必须登录或不使用名为“isFree”的变量查看页面,该变量设置为对还是错。

例子:

$routeProvider
.when('/', {
controller: 'homeController',
templateUrl: 'partials/home.html',
access: { isFree: true }
});

然后我在 .run 函数中有一段代码,用于监视路由更改并检查页面是否需要用户登录以及他们是否已经登录。如果页面“isFree”设置为 true然后它应该让页面加载,否则它会检查用户是否已登录,如果没有,它会重定向回主页。

.run(['$rootScope', '$location', function($root, $location) {
$root.$on('$routeChangeSuccess', function(scope, curRoute, prevRoute) {
if (!curRoute.access.isFree && !loggedIn) {
$location.path('/');
}
});

我遇到的问题不是这段代码不起作用。问题是,当您第一次加载到主页(isFree 设置为 true)时,控制台会给出一个错误,指出“isFree”未定义。在第一个错误发生后,主页本身仍然加载并且网站正常运行。但是,我不想首先弹出该错误。据我所知,当我第一次直接链接到主页时,它会在加载之前尝试检查 isFree 属性,但我还没有解决我的问题。如果有人知道我能做些什么来解决这个小问题,我们将不胜感激。

最佳答案

听起来你的 curRoute.access 没有定义,所以试试这个作为你的 if 语句:

if ((!curRoute.access || !curRoute.access.isFree) && !loggedIn) {
$location.path('/');
}

关于javascript - 第一次加载时出现 Angularjs $on $routeChangeSuccess 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21860562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com