Взаимодействие с директивой Videogular - как это сделать?
Я использую https://github.com/2fdevs/videogular и из коробки это работает довольно хорошо, особенно.
<videogular vg-width="videoWidth" vg-height="videoHeight" >
<video class='videoPlayer' ng-model="currentVideo">
<source ng-src='{{currentVideo.videoLocation}}' test="{{currentVideo}}" type='video/ogg'></source>
</video>
</videogular>
Я не уверен, как бы, скажем, поскольку автозапуск не соответствует действительности, заставить видео воспроизводиться программно? Я знаю, что мог внутри моего контроллера, который содержит вышеупомянутую разметку, позвонить angular.element()
затем позвоните .play()
но из того, что я прочитал, кажется неправильным. Что я не должен звонить angular.element()
внутри любого контроллера.
Что я должен делать? Должен ли я создать директиву, которая делает это? Где лучше всего разместить логику для "воспроизведения" и "приостановки" видео (fwi, я хочу, чтобы на экране было два видео, и как только первое закончится, сделайте несколько вещей, затем воспроизведите второе).
1 ответ
Вчера мы показали доступность API через $scope, чтобы вы могли получить доступ ко всем доступным методам.
Вы можете проверить API здесь.
Эта версия еще не доступна через Bower, мы планируем сделать это в эти выходные.
ОБНОВИТЬ
Лучший способ узнать, когда видео было завершено, - добавить функцию контекста в ваш контроллер.
$scope.onCompletePlayer1 = function() {
console.log("on complete 1");
};
$scope.onCompletePlayer2 = function() {
console.log("on complete 2");
};
Затем добавьте в ваш HTML эти функции в вашем videogular
директивы.
<videogular vg-complete="onCompletePlayer1()" ...></videogular>
<videogular vg-complete="onCompletePlayer2()" ...></videogular>
И, наконец, добавить vg-complete
как функция $ scope в videogular.js
:
\\Line 159
vgComplete: "&"
\\Line 507
$scope.onComplete = function(event) {
vg.setState(VG_STATES.STOP);
$scope.$emit(VG_EVENTS.ON_COMPLETE);
$scope.vgComplete();
$scope.$apply();
};
Мы постараемся добавить это в следующем выпуске, поэтому, возможно, вы захотите подождать пару дней.