2014-02-24 110 views
2

试用我的手在angularjs授权使用POST。我的代码还包含从此延迟加载POST未知提供者错误AngularJs

代码在向应用程序注入“权限”工厂时遇到问题。我的根目录下面

enter image description here

app.js:

(function() 
{ 
    var myApp = angular.module('myApp',['ngRoute']); 
    var roleId = 5; 
    var permissionList = {}; 

    myApp.config(function($routeProvider, $controllerProvider, $filterProvider, $provide, $compileProvider, $httpProvider) 
     { 
      myApp.controllerProvider = $controllerProvider; 
      myApp.compileProvider = $compileProvider; 
      myApp.routeProvider  = $routeProvider; 
      myApp.filterProvider  = $filterProvider; 
      myApp.provide   = $provide; 

      $httpProvider.responseInterceptors.push('securityInterceptor'); 

      $routeProvider 
       .when('/', { 
        templateUrl:'app/login/login.html', 
        resolve:{ 
         deps: function($q, $rootScope) { 
          var deferred = $q.defer(); 
          // Add dependencies here 
          var dependencies = 
           [ 

            'app/services/services.js', 
            'app/directives/directives.js', 
            'app/login/login.js', 

           ]; 

          $script(dependencies, function() 
          { 
           // all dependencies have now been loaded by $script.js so resolve the promise 
           $rootScope.$apply(function() 
           { 
            deferred.resolve(); 
           }); 
          }); 

          return deferred.promise; 
         } 
        }, 
        permission: 'login' 
       }); 
     }); 

    myApp.provider('securityInterceptor', function() { 
     this.$get = function($location, $q) { 
      return function(promise) { 
       return promise.then(null, function(response) { 
        if(response.status === 403 || response.status === 401) { 
         $location.path('partials/unauthorized'); 
        } 
        return $q.reject(response); 
       }); 
      }; 
     }; 
    }); 

    // Get User Roles and Permissions from server 
    angular.element(document).ready(function() { 
     $.get('b1.0/../api/index/user-roles', function(data) { 
      userRoles = data; 
     }); 

     $.post('b1.0/../api/index/user-permissions', {roleId:roleId}, function(data) { 
      permissionList = data; 
     }); 
    }); 

    myApp.run(function(permissions) { 
     permissions.setPermissions(permissionList) 
    }); 

    // Tried this but still not working 
    /*myApp.run(['permissions', function(permissions){ 
     permissions.setPermissions(permissionList); 
    }]);*/ 

})(); 

appBootstrap.js:

$script(['app/app.js'], function() 
{ 
    angular.bootstrap(document, ['myApp']); 
}); 

appMain.js:

var myApp = angular.module('myApp'); 

myApp.controller('mainAppCtrl', function($scope, $location, permissions) { 
    $scope.$on('$routeChangeStart', function(scope, next, current) { 
     var permission = next.$$route.permission; 
     if(_.isString(permission) && !permissions.hasPermission(permission)) 
      $location.path('/unauthorized'); 
    }); 
}); 

services.js :

angular.module('myApp') 
    .factory('permissions', function ($rootScope) { 
     var permissionList; 
     return { 
      setPermissions: function(permissions) { 
       permissionList = permissions; 
       $rootScope.$broadcast('permissionsChanged') 
      }, 
      hasPermission: function (permission) { 
       permission = permission.trim(); 
       return _.some(permissionList, function(item) { 
        if(_.isString(item.Name)) 
         return item.Name.trim() === permission 
       }); 
      } 
     }; 
    }); 

directives.js:

angular.module('myApp').directive('hasPermission', function(permissions) { 
    return { 
     link: function(scope, element, attrs) { 
      if(!_.isString(attrs.hasPermission)) 
       throw "hasPermission value must be a string"; 

      var value = attrs.hasPermission.trim(); 
      var notPermissionFlag = value[0] === '!'; 
      if(notPermissionFlag) { 
       value = value.slice(1).trim(); 
      } 

      function toggleVisibilityBasedOnPermission() { 
       var hasPermission = permissions.hasPermission(value); 

       if(hasPermission && !notPermissionFlag || !hasPermission && notPermissionFlag) 
        element.show(); 
       else 
        element.hide(); 
      } 
      toggleVisibilityBasedOnPermission(); 
      scope.$on('permissionsChanged', toggleVisibilityBasedOnPermission); 
     } 
    }; 
}); 

Here是我上传的文件。

我得到的错误是这样

http://errors.angularjs.org/1.2.13/ $喷油器/ unpr?P0 = permissionsProvider%20%3 C-%20permissions

谁能告诉我是怎么回事错在这里??

更新1:一次宣布对myApp通过@Chandermani的建议后,现在有这个错误太

http://errors.angularjs.org/1.2.13/ $喷油器/ NOMOD P0 = MyApp来

+0

Di你去错误链接? “从$喷油器是无法导致此错误来解决所需的相关性要解决这个问题,确保扶养人是指与拼写正确,例如:”当你已经提供了大量的代码,而无需指定发生错误我我不确定问题出在哪里。 – JeffryHouser

+0

是的,我已经重新检查,但是这不是我想 – VishwaKumar

+1

一定有什么用Chandermani做回答 – VishwaKumar

回答

3

Refrence所有的索引文件。html的你只参照

<script type="text/javascript" rel="javascript" src="app/vendor/jquery-2.1.0.min.js"></script> 
<script type="text/javascript" rel="javascript" src="app/vendor/angular.min.js"></script> 
<script type="text/javascript" rel="javascript" src="app/vendor/angular-route.js"></script> 
<script type="text/javascript" rel="javascript" src="app/script.js"></script> 
<script type="text/javascript" rel="javascript" src="app/appBootstrap.js"></script> 
<script type="text/javascript" rel="javascript" src="app/appMain.js"></script> 

角模块化的依赖性不包括在运行时的文件,它只是解决例如,如果你想解决您应该使用的东西在运行时的文件,比如Require.js


注意:不要把ng-view上的HTML body标签本身,创造身体内一个div并把ng-view就可以了,因为把它放在身体会涂掉一切的index.html页面上

+0

最近得到了另一个问题,实施后的问题。你有这个帖子的任何想法http://stackoverflow.com/questions/22096305/authorization-service-fails-on-page-refresh-in-angularjs – VishwaKumar

1

我看到的myApp申报?两次

app.js

var myApp = angular.module('myApp',['ngRoute']); 

appMain.js:

var myApp = angular.module('myApp',['ngRoute']); 

这将重新创建的模块。所以,第二个应该是

var myApp = angular.module('myApp');

+0

仍然得到同样的错误 – VishwaKumar

相关问题