在我的angularjs应用程序中。我有userService,它有确定用户是否登录的方法。 userService.user.loggedIn()
现在我想使用该服务来实现安全页面,我将在此userService.user.loggedIn()
语句中重定向用户。
我的app.js看起来像这样
(function () {
"use strict";
var app = angular.module("myApp",
["common.services",
"$rootScope",
"ui.router",
"ui.mask",
"userService",
"ui.bootstrap"]);
app.config(["$stateProvider", "$urlRouterProvider",
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');
}
}
});
}());
内部控制台我正在
ReferenceError:$ rootScope未定义
$ rootScope。$ on(' $ stateChangeStart',function(e,to,appUserService, $ rootScope)...
答案 0 :(得分:0)
它不在可注射的数组中:
试试这个:
app.config(["$stateProvider", "$urlRouterProvider", "$rootScope",
function ($stateProvider, $urlRouterProvider, $rootScope) {
答案 1 :(得分:0)
您只能在config中放置提供程序。所以将$ rootScope。$放在app controller中的函数上。