无法将工厂注入指令

时间:2013-11-08 05:07:43

标签: angularjs

我是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">

为简单起见,我已从工厂和指令中删除了代码。我不认为我删除的代码可能是问题,因为错误是说找不到工厂。对?也许我只是错过了一些非常明显的东西......

提前致谢。

2 个答案:

答案 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
  }

}]);

plunker