【发布时间】:2015-08-19 18:58:11
【问题描述】:
当 youtube 播放完视频后,我正在尝试调用一个函数。 我已经设置了这样的视图:
<div class="row">
<div class="col-md-6">
<div id="player" ts-video-player></div>
</div>
</div>
然后我决定设置这样的指令:
.directive('tsVideoPlayer', ['$state', function ($state) {
// autoplay video
function onPlayerReady(event) {
console.log('autoplay');
event.target.playVideo();
}
// when video ends
function onPlayerStateChange(event) {
if (event.data === 0) {
console.log('finsihed');
alert('done');
}
}
return {
restrict: 'A',
link: function (scope, element) {
console.log('set up player');
console.log(element.attr('id'));
function onYouTubePlayerAPIReady() {
console.log('Creating player');
var player = new YT.Player(element.attr('id'), {
height: '390',
width: '640',
videoId: 'GE2BkLqMef4',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
}
}
}])
我已将此脚本包含在 index.html 文件中:
<script src="http://www.youtube.com/player_api"></script>
但是什么也没发生。 我的控制台日志显示了“设置视频播放器”和播放器 ID,但永远不会调用 onYouTubePlayerAPIReady。
有人可以帮帮我吗?
【问题讨论】:
-
你在哪里打电话
onYouTubePlayerAPIReady()? -
无处,显然这个函数是在加载 youtube api 时调用的。
-
我检查了 youtube 的脚本代码,它有对该函数的引用,但只有在窗口对象中定义它时才应该运行,当您在指令范围内创建函数时不会发生这种情况。尝试在定义后调用该函数。
标签: javascript angularjs youtube