2016-06-11 25 views
0

在我的angularjs應用程序內。我有用戶服務,它具有確定用戶是否登錄的方法。 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 is not defined

$rootScope.$on('$stateChangeStart', function (e, to, appUserService, $rootScope)...

回答

0

這不是注射的數組中:

試試這個:

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

nope,我注入了app.config。同樣的錯 – user1765862

0

您只能放置提供商在配置。因此,將您的$ rootScope。$放在應用程序控制器的函數中。