保护对url和rootScope的访问权限未定义

时间:2016-06-11 13:16:10

标签: javascript angularjs

|-------------| 
|   imageim   |
|   ageimag   |
|   eimagei   |
|   mageima   |
|   geimage   |
|   imageim   |
|-------------|

2 个答案:

答案 0 :(得分:1)

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

正确的模块定义必须是:

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

我从列表中删除了"$rootScope"

<强> UPD 即可。仔细观察发现了另一个问题。你不能将$ rootScope注入配置块。将其移至运行:

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

答案 1 :(得分:0)

你不能在配置中提供注入服务(rootScope是服务) 但你可以在app.run中完成 这是调用顺序:

  1. app.config()//只提供可以注入
  2. app.run()
  3. 指令的编译函数(如果它们在dom中找到)
  4. app.controller()
  5. 指令的链接功能(再次,如果找到)

    app.run(["$stateProvider","$rootScope","userService",
      function($stateProvider,$rootScope,userService){
        $rootScope.$on('$stateChangeStart', function (e, toState, toParams, fromState, fromParams) {
        if (toState.data && toState.data.requiresLogin) {
        if (!userService.user.loggedIn()) {
            //token not found/not valid
            e.preventDefault();
            $location.path('/login');
          }
        }
      });  
    }]);