我开始使用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>
答案 0 :(得分:1)
只能将实例和常量注入run(...)
块。检查AngularJS documentation on modules。
配置块 - 在提供程序注册和配置阶段执行。 只能将提供程序和常量注入配置块。这是为了防止服务在完全配置之前意外实例化。
运行块 - 在创建注入器后执行并用于启动应用程序。 只能将实例和常量注入运行块。这是为了防止在应用程序运行时进一步进行系统配置。
尝试将其更改为config
,看看会发生什么。如果这不起作用,您可能需要将$provide
注入config
块,或将$injector$
注入run
块,并使用它们来获取您的依赖项。
答案 1 :(得分:0)
您不能将$ scope注入您的Principal工厂。当通过$ controller创建控制器时,它通过本地注入。
在工厂中删除$ scope作为依赖项,或者像在其他工厂中一样使用$ rootScope。