2

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

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

提前致谢。

4

2 回答 2

2

问题是您使用模块的方式。

var app = angular.module('MobileUploader', []); 

将创建一个新模块(集)。尽管

var app = angular.module('MobileUploader'); 

将检索现有模块(获取)。所以你必须, []在第二次调用时删除它,它应该可以工作,因为你只需要创建一个模块一次。

现场演示:http ://plnkr.co/edit/HChYfl8HVKrbzqUrh62n?p=preview

(来自问题的评论)

于 2013-11-08T05:50:30.133 回答
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
  }

}]);

笨蛋

于 2013-11-08T05:57:49.467 回答