又一个'未知提供者'用于AngularJS服务
Yet another 'Unknown provider' for an AngularJS service
我其实不喜欢做那个人,但我一直在忍受这个问题已经存在好几天了。我把这三个文件作为a的一部分更大的angularjs应用。我连这个基本的测验都做不好通过(或甚至通过)我一直在比较项目中的文件,我在网上读过(尝试了人们建议的所有方法)。我有甚至有几次从头开始编写文件。我可能做不到看到我的错误。我想这更容易发现(马上)
我很感激你的帮助。
gulp/karma的输出
PhantomJS 2.1.1 (Linux 0.0.0) SiteDescriptionService the service should be defined FAILED
Error: [$injector:unpr] Unknown provider: SiteDescriptionServiceProvider <- SiteDescriptionService
http://errors.angularjs.org/1.5.8/$injector/unpr?p0=SiteDescriptionServiceProvider%20%3C-%20SiteDescriptionService (line 4511)
bower_components/angular/angular.js:4511:86
getService@bower_components/angular/angular.js:4664:46
bower_components/angular/angular.js:4516:48
getService@bower_components/angular/angular.js:4664:46
injectionArgs@bower_components/angular/angular.js:4688:68
invoke@bower_components/angular/angular.js:4710:31
workFn@bower_components/angular-mocks/angular-mocks.js:3085:26
loaded@http://localhost:8080/context.js:151:17
inject@bower_components/angular-mocks/angular-mocks.js:3051:28
app/service/sitedescriptor-service-test.js:10:19
app/service/sitedescriptor-service-test.js:4:13
global code@app/service/sitedescriptor-service-test.js:1:9
Expected undefined to be truthy.
app/service/sitedescriptor-service-test.js:17:32
loaded@http://localhost:8080/context.js:151:17
模块声明
(function(){
'use strict';
angular.module('application.service', []);
})();
服务本身
(function () {
angular.module('application.service')
.service('SiteDescriptorService',
['$http', '$q', function ($http, $q) {
var lastRequestFailed = true,
promise,
items = [];
return {
name: 'SiteDescriptorService',
getItems: function () {
if (!promise || lastRequestFailed) {
promise = $http.get('site.json').then(
function (response) {
lastRequestFailed = false;
items = response.data;
return items;
}, function (response) { // error
lastRequestFailed = true;
return $q.reject(response);
});
}
return promise;
}
};
}]
);
})();
和测试
describe('SiteDescriptionService', function() {
'use strict';
describe('the service', function() {
var service, httpBackend;
beforeEach(module('application.service'));
beforeEach(inject(function(_SiteDescriptionService_, $httpBackend) {
service = _SiteDescriptionService_;
httpBackend = $httpBackend;
console.log(service);
}));
it('should be defined', function() {
expect(service).toBeTruthy();
});
});
});
干杯垫
看起来你只是在注入依赖时使用了不正确的名称,应该是'SiteDescriptorService'而不是'SiteDescriptionService'
相关文章:
- 在AngularJS服务中使用$http回调
- AngularJS 1.5.x服务未正确绑定,并且未在控制器中更新
- 使用AngularJS服务未获取数据
- 为什么Angularjs服务返回的是字符数组而不是对象数组
- AngularJS服务函数调用另一个函数
- AngularJS服务(更新/保存)
- 如何在打字稿的控制器中添加 angularjs 服务
- AngularJS 服务注入器错误
- 如何正确地通过angularjs服务连接到套接字
- 如何使用angularjs服务将表单参数传递给Rest
- 如何点击按钮调用angularJs服务
- angularjs服务生成数据后,我该如何停止它
- 我一直在获取angularjs服务不是函数错误(LoginService.login不是函数)
- 如何正确访问es6中的AngularJS服务
- 在多个控制器中使用AngularJs服务
- 如何处理AngularJS服务中的回调
- 如何访问回调函数之外的异步angularjs服务数据
- AJAX加载JSON数据并将其存储在angularjs服务中
- 获取AngularJS服务中TextArea的值
- 在Angularjs服务中为返回对象引用的http请求提供的数据构建简单的缓存