2014-06-24 197 views
0

我試圖創建一個指令作爲自定義視頻控件。我將一個html文件加載到此僞指令的templateUrl中。問題是,當有多個控件時,它們具有相同的src文件集,並且它們也共享視頻的狀態。當我從另一個控制暫停時,它會暫停第一個控制器上正在播放的視頻。這裏是指令的模板,我使用:指令自定義控件

dApp.directive('myVideoControl', function(){ 
return { 
    scope: { 
     cameraUrl: '=vcCameraUrl' 
    }, 
    restrict: 'E', 
    templateUrl: './../../js/directives/myVideoControl.html', 
    link: function (scope, element, attrs) { 
     scope.playVideo = function(){ 
      var v = document.getElementsByTagName("video")[0]; 
      v.play(); 
     } 
     scope.pauseVideo = function(){ 
      var v = document.getElementsByTagName("video")[0]; 
      v.pause(); 
     } 
    } 
} 
}); 

將大大appreaciate如果有人能指出,如果我在這裏做錯什麼。

謝謝。

回答

1

它看起來像你遇到的問題是你正在通過標籤名稱查找元素。基本上,任何使用您的指令都會影響您的dom中標籤<video>的每個元素。

帶指令的想法是,它們提供了直接訪問指令分配的元素。在你的情況下,element裏面的鏈接功能參數。所以,你需要參考各相關要素是這樣的:

var v = element[0]; 
v.play(); 

如果您分配了父元素的指令,並且希望所有的孩子,然後用find() jqLit​​e功能指令元素:

var v = element.find('video')[0]; 
v.play(); 
+0

感謝馬特。這解決了它。 – Imad

0
 var v = document.getElementsByTagName("video")[0]; 

您正在選擇整個頁面中的第一個視頻標籤。

,而不是讓你的模板中的元素,像

element.find('video')[0] 
+0

謝謝mpm。正如Matt也指出element.find('video')[0]做的那樣。 – Imad