Мой аудиоплеер HMTL находится в шаблоне, и нажмите кнопку, чтобы замедлить скорость воспроизведения звука:
<audio controls id="audioplayer{{$index}}" preload="auto" ng-src="{{pronunciation.audioFiles}}"></audio>
<div class="col-sm-1 col-md-1 col-lg-1">
<button type="button" class="btn btn-default" ng-click="slowAudio($index)">Slow</button>
</div>
Обработчик находится в контроллере:
$scope.slowAudio = function(index) {
let audioplayer = 'audioplayer' + index;
document.getElementById(audioplayer).playbackRate = 0.5;
};
Одна проблема заключалась в том, что аудиоплеер загружается позже, после загрузки страницы. Новый код ждет, пока пользователь нажмет кнопку, прежде чем обработчик запустит getElementById
для поиска аудиоплеера.
Другая проблема заключается в том, что на моей странице есть как минимум три аудиоплеера для трех и более записей. id="audioplayer{{$index}}"
динамически генерирует уникальный идентификатор элемента для каждого аудиоплеера. Кнопка проходит через какой аудиоплеер выбрал пользователь. Затем обработчик получает этот уникальный аудиопроигрыватель по идентификатору элемента и устанавливает playbackRate
.