gpt4 book ai didi

javascript - 保护对 url 和 rootScope 的访问未定义

转载 作者:行者123 更新时间:2023-11-27 22:54:14 25 4
gpt4 key购买 nike

(function () {
"use strict";
var app = angular.module("myApp",
["common.services",
"$rootScope",
"ui.router",
"ui.mask",
"userService",
"ui.bootstrap"]);

app.config(["$stateProvider", "$urlRouterProvider","$rootScope",
function ($stateProvider, $urlRouterProvider, $rootScope) {
$urlRouterProvider.otherwise("/");

$stateProvider
.state("index", {
url: "/",
templateUrl: "app/index.html",
})
// Home page /* SECURED */
.state("home", {
url: "/home",
templateUrl: "app/home/home.html",
controller: "HomeController as vm",
data: {
requiresLogin: true
}
})
// Login
.state("login", {
url: "/login",
templateUrl: "app/login/login.html",
controller: "LoginController as vm"
})

}]
);
$rootScope.$on('$stateChangeStart', function (e, to, userService) {
if (to.data && to.data.requiresLogin) {
if (!userService.user.loggedIn()) {
//token not found/not valid
e.preventDefault();
$location.path('/login');
}
}
});
}());

最佳答案

您没有发布问题所在,但我认为没有任何效果。如果是这样,您的代码显然存在问题:您正在尝试使用 $rootScope 作为应用程序模块的模块依赖项。

正确的模块定义必须是:

angular.module("myApp", [
"common.services",
"ui.router",
"ui.mask",
"userService",
"ui.bootstrap"
])

我从列表中删除了“$rootScope”

UPD。仔细一看,发现了另一个问题。您无法将 $rootScope 注入(inject)配置 block 。将其移至运行:

app
.config([...])
.run(['$rootScope', function($rootScope) {
$rootScope.$on(...);
}];

关于javascript - 保护对 url 和 rootScope 的访问未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37764179/

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