未定义实现安全页面和$ rootScope

时间:2016-06-11 10:55:26

标签: javascript angularjs

在我的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)...

2 个答案:

答案 0 :(得分:0)

它不在可注射的数组中:

试试这个:

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

答案 1 :(得分:0)

您只能在config中放置提供程序。所以将$ rootScope。$放在app controller中的函数上。