Я пишу приложение, которое воспроизводит дорожки из soundcloud с помощью angular-soundmanager2. Он работает, но когда я воспроизвожу второй трек, первый трек снова воспроизводится перед вторым треком.Как вызвать ngDirective из углового контроллера?
Если я вручную нажмю кнопку «Очистить список воспроизведения», созданную со следующей директивой, перед загрузкой второй страницы, эта проблема будет решена.
<div id="playDiv" ng-show="audioAvailable">
<br/>
<button play-pause-toggle data-play="Play" data-pause="Pause">Play</button>
<button clear-playlist>Clear Playlist</button>
</div>
Код для очистки дорожек создается с помощью директивы.
ngSoundManager.directive('clearPlaylist', ['angularPlayer', '$log',
function(angularPlayer, $log) {
return {
restrict: "EA",
link: function(scope, element, attrs) {
element.bind('click', function(event) {
//first stop any playing music
angularPlayer.stop();
angularPlayer.setCurrentTrack(null);
angularPlayer.clearPlaylist(function(data) {
$log.debug('all clear!');
});
});
}
};
}
]);
Код для добавления трека по существу.
if (data.soundcloud_track) {
SC.stream('/tracks/' + data.soundcloud_track.id , function(sm_object){
var track = {
id: data.soundcloud_track.id,
title: data.soundcloud_track.title,
artist: data.soundcloud_track.artist,
url: sm_object.url
};
$rootScope.audioAvailable = true ;
}) ;
}
У меня есть доступ к глобальным ngSoundManager, soundManager и угловому soundManager. По сути, я хотел бы сначала очистить плейлист, а затем добавить новый трек.
Как я могу назвать эту директиву угловым контроллером?
Директива из библиотеки угловых-soundmanager2. Если бы директива не могла быть изменена, как бы вы справились с ней в Луксоре? –
оберните все вокруг другой (вашей) директивой, которая отражает события исходной директивы. – Luxor001
очень круто и спасибо :-) –