我是Angular的新手,正在做一些实验。我想创建一个工厂,它可以访问各种YouTube API端点,然后在指令中使用该工厂。但我一直在努力解决这个错误:
Error: [$injector:unpr] Unknown provider: YouTubeAPIProvider <- YouTubeAPI uploadVideoButtonDirective
这是指令:
var app = angular.module('MobileUploader', []);
app.directive('uploadVideoButton', ['YouTubeAPI', function(YouTubeAPI) {
return {
//SOME CODE HERE
}
}]);
这是工厂:
var app = angular.module('MobileUploader', []);
app.factory('YouTubeAPI', ['$http', function($http) {
return{
//SOME CODE HERE
}
}]);
我查看了文档和其他帖子,可以看出这个错误与注入问题有关。对于我的生活,我无法弄清楚我的代码有什么问题。我正在指定应用程序:
<html lang="en" ng-app="MobileUploader">
为简单起见,我已从工厂和指令中删除了代码。我不认为我删除的代码可能是问题,因为错误是说找不到工厂。对?也许我只是错过了一些非常明显的东西......
提前致谢。
答案 0 :(得分:2)
问题在于您使用模块的方式。
var app = angular.module('MobileUploader', []);
将创建一个新模块(set)。而
var app = angular.module('MobileUploader');
将检索现有模块(get)。因此,您必须在第二次调用时删除, []
,它应该可以正常工作,因为您只需要创建一次模块。
现场演示:http://plnkr.co/edit/HChYfl8HVKrbzqUrh62n?p=preview
(来自问题的评论)
答案 1 :(得分:0)
var app = angular.module('MobileUploader', [])
app.factory('YouTubeAPI', ['$http', function($http) {
return{
//SOME CODE HERE
}
}]);
app.directive('uploadVideoButton', ['YouTubeAPI', function(YouTubeAPI) {
return {
//SOME CODE HERE
}
}]);