Я пишу приложение, которое воспроизводит треки из звукового облака, используя angular-soundmanager2. Это работает, но когда я играю вторую дорожку, первая дорожка снова воспроизводится перед второй дорожкой.
Если я вручную нажму кнопку «Очистить список воспроизведения», созданную с помощью следующей директивы, перед загрузкой второй страницы, эта проблема будет решена.
<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 и angular-soundManager. По сути, я хотел бы сначала очистить список воспроизведения, а затем добавить новый трек.
Как бы я назвал эту директиву с помощью контроллера angular?