如何在没有onYouTubeIframeAPIready的情况下加载YouTube Iframe API,如何动态测试

时间:2014-10-26 14:43:04

标签: angularjs youtube

我在AngularJS中有一个通过YouTube IframeAPI播放(等)YouTube视频的指令。

在指令正文中,我将通过

检查IframeAPI是否准备就绪
var playerReady = $q.defer();
window.onYouTubeIframeAPIReady = function() {
  console.log('YouTube API is ready.')
  playerReady.resolve();
}

这只执行一次。

然后,我有

return {restrict: 'E',
   link: function(scope, element, attrs) {

以及我正在观看范围变量的地方,但这在这里并不重要。

然后,当我的youtube元素被创建时,我可以在链接函数init中使用 playerReady.promise.then(...

这是在scope.$watch回调中。

这很好用,如果我的youtube元素出现在第一条路线中,即使视频只是稍后设置(我有ng-show=..."隐藏它,直到在范围内触发某个事件,链接器函数也在范围内监视此对象,但如果稍后导航到它(即第一个路由没有我的youtube元素),我就无法再解析playerReady。

总结一下,如果youtube iframe api准备好并因此解析我的playerReady,我怎样才能动态测试?我可以在我的范围观察者中做到这一点。

这在指令体中解决了问题

setTimeout(function(){
  playerReady.resolve();
},3000);

但并不是它的制作方式。

0 个答案:

没有答案