2016-09-02 65 views
0

我正在編寫Video指令來封裝HTML5視頻標記並提供基本的綁定。

這一切都很好,但我有一個currentposition屬性的問題。

<my-video currentposition="$ctrl.currentVideoPosition"></my-video> 

我允許用戶綁定到這個提供一種機制,讓他們跳過通過一些控制視頻,而且還讀值找出視頻目前是。

在指令鏈接功能,我看這個屬性的變化,並相應地更新我的視頻的位置。

$scope.$watch(() => { return $scope.currentposition; },() => { 
    var videoElement = $element.find("video"); 

    (videoElement[0] as any).currentTime = $scope.currentposition; 
}); 

只要它只用於查找視頻而不用於讀取當前位置,此工作正常。只要我在指令中設置了當前位置,它就會啓動手錶,使其在當前位置永久粘貼。

這是最好的方法是什麼?有些選項我已經想到了,但我不喜歡其中任何

  • 有兩個屬性,一個是位置尋求一個位置讀取
  • 設置一個標誌,說我在內部更新屬性,並忽略下一個$ watch回調

回答

1

您可以使用component和單向綁定。

module.component('myVideo', { 
    bindings: { 
       currentposition: '<' 
      }, 
    controller: class MyVideoController { 
       $onChanges(changes) { 
        if (changes.currentposition) { 
        var videoElement = $element.find("video"); 
        (videoElement[0] as any).currentTime = this.currentposition;   
        } 
       } 
       } 

$onChanges被稱爲每當改變發生在組件外,你想要什麼。

+0

因此,單向綁定允許父範圍或內部範圍更改值。除了只有父範圍的變化纔會啓動onChange事件?如果內部更改不啓動更改事件,父級範圍如何知道currentPosition何時移動? – Chris

相關問題