Javascript 错误$injector:i';我正在尝试注入服务器AngularJs
我需要使用某个文件中的一些全局函数,并从不同的.js文件中调用它们。函数所在的文件名为Javascript 错误$injector:i';我正在尝试注入服务器AngularJs,javascript,angularjs,Javascript,Angularjs,我需要使用某个文件中的一些全局函数,并从不同的.js文件中调用它们。函数所在的文件名为header.js: (function(){ var head = { templateUrl: '/app/components/include/header.html', controller: headCtrl }; angular .module('myApp') .component('adminHead', head); headCtrl.$inject
header.js
:
(function(){
var head = {
templateUrl: '/app/components/include/header.html',
controller: headCtrl
};
angular
.module('myApp')
.component('adminHead', head);
headCtrl.$inject = ["$http"];
function headCtrl($http){
function test() {
console.log('working');
}
}
})();
我需要调用home.js
文件中的示例函数:
(function(){
'use strict';
var home = {
templateUrl: '/app/components/home/admin-home.html',
controller: adminHomeCtrl
};
angular
.module('myApp')
.component('adminHome', home);
adminHomeCtrl.$inject = ["$scope", "$http", "$cookies"];
function adminHomeCtrl($scope, $http, $cookies){
}
})();
以前,Stackoverflow上的某个hre帮助我提供了一个调用这些全局函数的服务示例。因此,我创建了一个名为excelsior.js
的新文件,保存示例:
(function () {
angular.module('myApp')
.factory('MyService', ['myDependency', function (myDependency) {
const s = {
test: function() {
console.log('working');
},
};
return s;
}]);
})();
现在我的问题来了,当我尝试将“MyService”作为依赖项注入时。我在两个文件上都设置了如下依赖项:
(function(){
'use strict';
var home = {
templateUrl: '/app/components/home/admin-home.html',
controller: adminHomeCtrl
};
angular
.module('myApp')
.component('adminHome', home);
adminHomeCtrl.$inject = ["$scope", "$http", "$cookies", "MyService"];
function adminHomeCtrl($scope, $http, $cookies, MyService){
var x = MyService.test();
console.log(x);
}
})();
(function(){
'use strict';
angular
.module('myApp', ['ngResource', 'ngRoute', 'ngCookies', 'ngSanitize', 'MyService']);
})();
<script src="app/app.js"></script>
<script src="app/components/login/admin-login.js"></script>
<script src="app/components/include/excelsior.js"></script>
<script src="app/components/include/header.js"></script>
<script src="app/components/home/admin-home.js"></script>
但现在我得到了下一条错误消息:
Error: [$injector:unpr] http://errors.angularjs.org/1.6.9/$injector/unpr?p0=myDependencyProvider%20%3C-%20myDependency%20%3C-%20MyService
有人知道为什么会这样?在另一篇文章中,我发现我也必须在app.js上声明它,我是这样做的:
(function(){
'use strict';
var home = {
templateUrl: '/app/components/home/admin-home.html',
controller: adminHomeCtrl
};
angular
.module('myApp')
.component('adminHome', home);
adminHomeCtrl.$inject = ["$scope", "$http", "$cookies", "MyService"];
function adminHomeCtrl($scope, $http, $cookies, MyService){
var x = MyService.test();
console.log(x);
}
})();
(function(){
'use strict';
angular
.module('myApp', ['ngResource', 'ngRoute', 'ngCookies', 'ngSanitize', 'MyService']);
})();
<script src="app/app.js"></script>
<script src="app/components/login/admin-login.js"></script>
<script src="app/components/include/excelsior.js"></script>
<script src="app/components/include/header.js"></script>
<script src="app/components/home/admin-home.js"></script>
但最糟糕的是,我的应用程序崩溃了,下一条消息是:
angular.js:88 Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.6.9/$injector/modulerr?p0=adminApp&p1=Error%3A%20%5B%24injector%3Amodulerr%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.6.9%2F%24injector%2Fmodulerr%3Fp0%3DMyService%26p1%3DError%253A%2520%255B%2524injector%253Anomod%255D%2520http%253A%252F%252Ferrors.angularjs.org%252F1.6.9%252F%2524injector%252Fnomod%253Fp0%253DMyService%250A%2520%2520%2520%2520at%2520https%253A%252F%252Fajax.googleapis.com%252Fajax%252Flibs%252Fangularjs%252F1.6.9%252Fangular.min.js%253A7%253A76%250A%2520%2520%2520%2520at%2520https%253A%252F%252Fajax.googleapis.com%252Fajax%252Flibs%252Fangularjs%252F1.6.9%252Fangular.min.js%253A26%253A408%250A%2520%2520%2520%2520at%2520b%2520(https%253A%252F%252Fajax.googleapis.com%252Fajax%252Flibs%252Fangularjs%252F1.6.9%252Fangular.min.js%253A25%253A439)%250A%2520%2520%2520%2520at%2520https%253A%252F%252Fajax.googleapis.com%252Fajax%252Flibs%252Fangularjs%252F1.6.9%252Fangular.min.js%253A26%253A182%250A%2520%2520%2520%2520at%2520https%253A%252F%252Fajax.googleapis.com%252Fajax%252Flibs%252Fangularjs%252F1.6.9%252Fangular.min.js%253A42%253A332%250A%2520%2520%2520%2520at%2520r%2520(https%253A%252F%252Fajax.googleapis.com%252Fajax%252Flibs%252Fangularjs%252F1.6.9%252Fangular.min.js%253A8%253A7)%250A%2520%2520%2520%2520at%2520g%2520(https%253A%252F%252Fajax.googleapis.com%252Fajax%252Flibs%252Fangularjs%252F1.6.9%252Fangular.min.js%253A42%253A180)%250A%2520%2520%2520%2520at%2520https%253A%252F%252Fajax.googleapis.com%252Fajax%252Flibs%252Fangularjs%252F1.6.9%252Fangular.min.js%253A42%253A364%250A%2520%2520%2520%2520at%2520r%2520(https%253A%252F%252Fajax.googleapis.com%252Fajax%252Flibs%252Fangularjs%252F1.6.9%252Fangular.min.js%253A8%253A7)%250A%2520%2520%2520%2520at%2520g%2520(https%253A%252F%252Fajax.googleapis.com%252Fajax%252Flibs%252Fangularjs%252F1.6.9%252Fangular.min.js%253A42%253A180)%0A%20%20%20%20at%20https%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.6.9%2Fangular.min.js%3A7%3A76%0A%20%20%20%20at%20https%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.6.9%2Fangular.min.js%3A43%3A99%0A%20%20%20%20at%20r%20(https%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.6.9%2Fangular.min.js%3A8%3A7)%0A%20%20%20%20at%20g%20(https%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.6.9%2Fangular.min.js%3A42%3A180)%0A%20%20%20%20at%20https%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.6.9%2Fangular.min.js%3A42%3A364%0A%20%20%20%20at%20r%20(https%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.6.9%2Fangular.min.js%3A8%3A7)%0A%20%20%20%20at%20g%20(https%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.6.9%2Fangular.min.js%3A42%3A180)%0A%20%20%20%20at%20gb%20(https%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.6.9%2Fangular.min.js%3A46%3A250)%0A%20%20%20%20at%20c%20(https%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.6.9%2Fangular.min.js%3A22%3A19)%0A%20%20%20%20at%20Uc%20(https%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.6.9%2Fangular.min.js%3A22%3A332)
少了什么?或者当我注入依赖性时为什么不工作
在我的index.html上,我这样调用了js:
(function(){
'use strict';
var home = {
templateUrl: '/app/components/home/admin-home.html',
controller: adminHomeCtrl
};
angular
.module('myApp')
.component('adminHome', home);
adminHomeCtrl.$inject = ["$scope", "$http", "$cookies", "MyService"];
function adminHomeCtrl($scope, $http, $cookies, MyService){
var x = MyService.test();
console.log(x);
}
})();
(function(){
'use strict';
angular
.module('myApp', ['ngResource', 'ngRoute', 'ngCookies', 'ngSanitize', 'MyService']);
})();
<script src="app/app.js"></script>
<script src="app/components/login/admin-login.js"></script>
<script src="app/components/include/excelsior.js"></script>
<script src="app/components/include/header.js"></script>
<script src="app/components/home/admin-home.js"></script>
甚至,我也尝试过改变th文件的顺序,将excelsior文件放在admin home文件之后,但仍然是相同的错误
我正在使用AngularJs和Javascript
希望你能帮助我。提前感谢首先,您不想在主
myApp
模块中插入MyService
,因为您正在myApp
中使用angular.module('myApp').factory('MyService',[…])注册服务
。其次,您得到的注入错误是针对myDependency
到MyService
服务中。myDependency
从哪里来?现在我明白了!我要求提供一个服务示例,因为我是新使用它的人。收到的示例具有myDependency
。我已经删除了myDependency
,它可以工作了!非常感谢。