Я пытаюсь вызвать функцию, когда youtube заканчивает воспроизведение видео. Я создал представление, как это:AngularJS и 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>
Но ничего не происходит. В моих консольных журналах отображается «настройка видеопроигрывателя» и идентификатор проигрывателя, но onYouTubePlayerAPIRead никогда не вызывается.
Может кто-нибудь помочь мне?
Где вы звоните 'onYouTubePlayerAPIReady()'? – dcardoso
нигде, по-видимому, эта функция вызывается при загрузке youtube api. – r3plica
Я проверил код скрипта youtube, и он ссылается на эту функцию, но он должен запускаться только в том случае, если он определен в объекте окна, чего не происходит, когда вы создаете функцию внутри области действия директивы. Попробуйте вызвать функцию после ее определения. – dcardoso