Angularjs onYoutubeIFrameAPIReady只发射一次
我有一个angularjs应用程序,我想在新闻提要中显示一些youtube视频。 我已经创建了一个加载播放器的指令,我的视频在第一次输入包含视频的视图时加载。但是如果我离开视图并再次打开,视频将不会加载 似乎“onYouTubeIframeAPIReady”事件仅在我第一次进入视图时触发 视图:Angularjs onYoutubeIFrameAPIReady只发射一次,angularjs,angularjs-directive,youtube-iframe-api,Angularjs,Angularjs Directive,Youtube Iframe Api,我有一个angularjs应用程序,我想在新闻提要中显示一些youtube视频。 我已经创建了一个加载播放器的指令,我的视频在第一次输入包含视频的视图时加载。但是如果我离开视图并再次打开,视频将不会加载 似乎“onYouTubeIframeAPIReady”事件仅在我第一次进入视图时触发 视图: <div bind-html-compile="newsitem.description"></div> newsitem.description是以jso
<div bind-html-compile="newsitem.description"></div>
newsitem.description是以json格式发送到应用程序的原始html
所以它可能看起来像:
{'this is a video <youtube videoid="myYoutubeVideoId"></youtube>'}
{‘这是一个视频}
这也是我使用bind-html-compile指令的原因
指令
.directive('youtube', function($window) {
return {
restrict: "E",
scope: {
videoid: "@"
},
template: '<div></div>',
link: function(scope, element, attrs) {
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
$window.onYouTubeIframeAPIReady = function() {
player = new YT.Player(element.children()[0], {
playerVars: {
autoplay: 0,
html5: 1,
theme: "light",
modesbranding: 1,
color: "white",
iv_load_policy: 3,
showinfo: 0,
controls: 0,
rel: 0,
},
videoId: scope.videoid
});
};
}
}})
指令('youtube',函数($window){
返回{
限制:“E”,
范围:{
videoid:“@”
},
模板:“”,
链接:函数(范围、元素、属性){
var tag=document.createElement('script');
tag.src=”https://www.youtube.com/iframe_api";
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
var播放器;
$window.onYouTubeIframeAPIReady=函数(){
player=新的YT.player(element.children()[0]{
playerVars:{
自动播放:0,
html5:1,
主题:“光”,
模式分解:1,
颜色:“白色”,
iv_负载_策略:3,
showinfo:0,
控件:0,
rel:0,
},
videoId:scope.videoId
});
};
}
}})
当我从onYoutubeIFrameAPIReady中输入console.log时,我只在第一次获得输出。。
所以我认为这个事件是在函数准备好之前触发的,但我真的搞不清楚
有什么想法吗?我也有同样的问题。阅读这篇文章,我假设您已经阅读了,因为您的代码与文章的代码非常接近,您只是没有阅读到文章的底部: 我在底部找到了一个解释,解释了为什么会这样,还有一个演示,展示了多个视频的工作原理。我还没有尝试自己修复它,但我想回答您的问题:
我也有同样的问题。阅读这篇文章,我假设您已经阅读了,因为您的代码与文章的代码非常接近,您只是没有阅读到文章的底部: 我在底部找到了一个解释,解释了为什么会这样,还有一个演示,展示了多个视频的工作原理。我还没有尝试自己修复它,但我想回答您的问题:
我也有同样的问题。阅读这篇文章,我假设您已经阅读了,因为您的代码与文章的代码非常接近,您只是没有阅读到文章的底部: 我在底部找到了一个解释,解释了为什么会这样,还有一个演示,展示了多个视频的工作原理。我还没有尝试自己修复它,但我想回答您的问题:
我也有同样的问题。阅读这篇文章,我假设您已经阅读了,因为您的代码与文章的代码非常接近,您只是没有阅读到文章的底部: 我在底部找到了一个解释,解释了为什么会这样,还有一个演示,展示了多个视频的工作原理。我还没有尝试自己修复它,但我想回答您的问题:
证实了这一点。使用一个工厂,我现在看到我所有的视频播放。确认这是有效的。使用一个工厂,我现在看到我所有的视频播放。确认这是有效的。使用一个工厂,我现在看到我所有的视频播放。确认这是有效的。使用工厂,我现在可以看到我所有的视频播放。