У меня есть приложение angularjs, где я хочу показать некоторые видеоролики youtube в ленте новостей. Я создал директиву для загрузки проигрывателя, и мои видео загружаются в первый раз, когда я вхожу в представление, содержащее видео. Но если я оставлю представление и снова открою видео, видео не будет загружено.onYoutubeIFrameAPIReady только один раз
Кажется, что событие «onYouTubeIframeAPIReady» запускается только при первом входе в представление.
Вид:
<div bind-html-compile="newsitem.description"></div>
newsitem.description сырой HTML отправить в приложение в виде JSON.
так это может выглядеть следующим образом:
{'this is a video <youtube videoid="myYoutubeVideoId"></youtube>'}
Это также объясняет, почему им с помощью привязки в HTML-компиляции директивы.
директива
.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
});
};
}
}})
Когда я console.log от onYoutubeIFrameAPIReady я только получить выводим первый раз .. Так им думать, что это событие как-то срабатывает, прежде чем функция будет готова, но я могу Реально это выяснить.
Любые идеи?
Подтверждено это работает. Используя фабрику, я вижу все мои видео. – Squiggler
Ровно что мне нужно .. спасибо! – OngoBoingo