2015-10-20 72 views
0

我有一個angularjs應用程序,我想在新聞源中顯示一些youtube視頻。 我已經創建了一個指令來加載播放器,並且在我第一次進入包含視頻的視圖時加載了我的視頻。但是,如果我離開視圖,並再次打開我的視頻不加載。onYoutubeIFrameAPIReady只開了一次

看來,事件「onYouTubeIframeAPIReady」僅在我第一次進入視圖時觸發。

的視圖:

 <div bind-html-compile="newsitem.description"></div> 

的newsitem.description是原始HTML發送給應用程序,JSON。

所以它可能看起來像:

{'this is a video <youtube videoid="myYoutubeVideoId"></youtube>'} 

這也是爲什麼使用IM綁定,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 
      }); 
     }; 
    } 
}}) 

,當我從onYoutubeIFrameAPIReady CONSOLE.LOG我只得到輸出的第一次.. 所以即時通訊思想,該事件被觸發不知何故之前的功能已準備就緒,但我可以真的不知道。

任何想法?

回答

3

我遇到同樣的問題。看完這篇文章,其中我假設你跟着,因爲你的代碼是非常接近文章的代碼,你剛纔沒看文章的底部:

http://blog.oxrud.com/posts/creating-youtube-directive/

我發現在底部的爲什麼會發生這種情況的解釋以及演示多個視頻工作的演示。我沒有試過但要自己解決,但要回答你的問題:

http://run.plnkr.co/plunks/8lxuN8/

+0

證實了這一工作。現在使用工廠,我可以看到我所有的視頻都在播放。 – Squiggler

+0

Excactly我需要..謝謝! – OngoBoingo