添加“.run”时未知提供程序AngularJs

时间:2015-11-10 14:23:20

标签: javascript angularjs

我开始使用AngularJS。当我尝试将模块“Principal”和“Authentication”添加到.run()时,我在控制台日志中收到此消息。 如果我删除“Principal”和“Authentication”...我没有收到错误。

https://docs.angularjs.org/error/ $ injector / unpr?p0 = $ scopeProvider%20%3C-%20 $ scope%20%3C-%20principal%20%3C-%20authorization:unpr:Unknow Provider

var authentication = angular.module('Authentication',[]);

angular.module('simpleApp',['ui.router','ui.bootstrap','Authentication'])
    .factory('Principal',['$q','$scope',
        function($q,$scope){

        }
    ]).factory('Authorization',['$rootScope','$state','Principal',
        function($rootScope, $state, Principal){

        }
    ]).controller('SigninController',['$scope','$state','Principal',
        function($scope,$state,Principal){

        }
    ]).controller('HomeController', ['$scope','$state','Principal',
        function($scope,$state,Principal){

        }
    ]).config(['$stateProvider','$urlRouterProvider',
        function($stateProvider, $urlRouterProvider){

        }
    ]).run(['$rootScope','$state','$stateParams','Principal','Authorization',
        function($rootScope,$state,$stateParams,Principal){

        }
    ]);

我的HTML:

    <!DOCTYPE html>
 <html ng-app="simpleApp" id="ng-app">
     <head>
    <link rel="stylesheet" href="/annonce/public/inc/bootstrap/css/bootstrap-theme.css" >
    <link rel="stylesheet" href="/annonce/public/inc/bootstrap/css/bootstrap-min.css" >
    <link rel="stylesheet" href="/annonce/public/inc/bootstrap/css/bootstrap.css" >
    <link rel="stylesheet" href="/annonce/public/inc/bootstrap/css/styles.css" >

    <script type="text/javascript" src="/annonce/public/inc/js/jquery-1.11.3.js" ></script>
    <script type="text/javascript" src="/annonce/public/inc/bootstrap/js/bootstrap.min.js" ></script>
    <script type="text/javascript" src="/annonce/public/app/js/angular.min.js" ></script>
    <script type="text/javascript" src="/annonce/public/app/js/angular-route.min.js" ></script>
    <script type="text/javascript" src="/annonce/public/app/js/angular-ui-bootstrap.min.js" ></script>
    <script type="text/javascript" src="/annonce/public/app/simple/app.js"></script>
    <script type="text/javascript" src="/annonce/public/app/modules/authentication/services/AuthenticationService.js" ></script>

</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Mik3fly : Admin</a>
        </div>
        <div  id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li><a href="#">Index</a></li>
            <li><a href="#">CGV</a></li>
            <li><a href="#">Contact</a></li>
          </ul>
        </div><!--/.nav-collapse -->
    </div>
</nav>
<nav class="navbar navbar-lower affix" role="navigation">
    <div class="container paddingLeftRight0">
        <div  class="nav sousmenu">
            <ul class="nav navbar-nav">
              <li><a ui-sref="home">Connexion</a></li>
              <li><a ui-sref="signin">Autre</a></li>
            </ul>
        </div>
    </div>
</nav>            
    <div class="container" style="margin-top:50px;" ui-view="content" >  

    </div>
</body>

2 个答案:

答案 0 :(得分:1)

只能将实例和常量注入run(...)块。检查AngularJS documentation on modules

  

配置块 - 在提供程序注册和配置阶段执行。 只能将提供程序和常量注入配置块。这是为了防止服务在完全配置之前意外实例化。

     

运行块 - 在创建注入器后执行并用于启动应用程序。 只能将实例和常量注入运行块。这是为了防止在应用程序运行时进一步进行系统配置。

尝试将其更改为config,看看会发生什么。如果这不起作用,您可能需要将$provide注入config块,或将$injector$注入run块,并使用它们来获取您的依赖项。

答案 1 :(得分:0)

您不能将$ scope注入您的Principal工厂。当通过$ controller创建控制器时,它通过本地注入。

在工厂中删除$ scope作为依赖项,或者像在其他工厂中一样使用$ rootScope。