来自另一个模块的 Angular JS Service DI
Angular JS Service DI from another module
我在将服务从角度 js 模块注入我的主控制器时遇到了问题。我收到此错误:https://docs.angularjs.org/error/$injector/unpr?p0=aProvider%20%3C-%20a%20%3C-%20solrquery
我的代码如下:
var app = angular.module('app1',[
'solr'
]);
app.controller('app1cont', ['$scope', 'solrquery', function($scope,solrquery){
console.log("Start");
$scope.value = 1;
solrquery('aaa');
}]);
solr 模块如下所示:
var solr1 = angular.module('solr', []);
solr1.run(function(){
console.log("Module Loaded");
});
solr1.service('solrquery',function(a) {
console.log('searching for: ' + a);
}
);
当我运行它时,我看到模块加载打印到控制台并出现错误。如果我从应用程序控制器和 solrquery('aaa') 中删除注入;代码运行正常...已经花了几个小时了,任何帮助将不胜感激。
提前谢谢。
编辑:
感谢 Anthony 的回答,在重新编写代码后,模块看起来像这样:
var solr1 = angular.module('solr', []);
solr1.run(function(){
console.log("Module Loaded");
});
//as a factory
solr1.factory('solrquery',function() {
return function(a) {
console.log('searching for: ' + a);
}
}
);
//as a service
solr1.service('solrser', function() {
this.test = function(a) {
console.log(a);
}
});
控制器: var app = angular.module('app1',[ "索尔" ]);
app.controller('app1cont', ['$scope', 'solrquery', 'solrser', function($scope,solrquery,solrser){
console.log("Start");
$scope.value = 1;
solrquery('a');
solrser.test('a');
}]);
注入器抱怨,因为它正在寻找名为a
的东西注入到服务中。您可以通过将solrquery
更改为返回函数的工厂来解决此问题...
solr1.factory('solrquery', function () {
return function (a) {
console.log('searching for: ' + a);
};
});
现场演示
请注意,从技术上讲,将其保留为服务仍然有效,但返回某些内容的函数实际上应该是一个工厂。
angularjs.org 错误链接告诉您问题所在。
Unknown provider: aProvider <- a <- solrquery
Angular 的注入器正在寻找一个名为 a
的依赖项,该依赖项在 solrquery
服务的函数参数中指定:
solr1.service('solrquery',function(a) {
您的服务定义需要重新设计。这是你应该如何定义服务的一个很好的参考:angular.service vs angular.factory。
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- AngularJS:js-factory service在调用之间的流程
- 来自另一个模块的 Angular JS Service DI
- 如何在Angular.js指令中将service.js的内部查询结果绑定到外部变量
- 在angular js中使用service更新作用域变量
- 如何将上传功能外包为service node .js
- 如何在service-worker.js中更新动态url
- Angular JS SPA:如何使用Angular Controller SPA来调用Angular service
- Angular js $http service:- header在catch块中不可访问
- $rootScope vs. service - Angular JS
- Angular.js使用service时控制器中的方法复制
- Angular.js Service Factory module..以函数形式返回内部代码
- 将angular js的service/factory注入到Jasmine中
- 如何在angular js中使用web worker来调用service
- 无法检测到service-worker.js中的变化
- 用Crypto Node.js加密,用window解密.crypto in Service-Worker
- Knockout Js下拉菜单没有加载来自WebAPi Service的值