저는 angle-soundmanager2를 사용하여 soundcloud에서 트랙을 재생하는 응용 프로그램을 작성하고 있습니다. 작동하지만 두 번째 트랙을 재생할 때 첫 번째 트랙이 두 번째 트랙 전에 다시 재생됩니다.각도 컨트롤러 내에서 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 ;
}) ;
}
나는 globals ngSoundManager, soundManager 및 angular-soundManager에 액세스 할 수 있습니다. 기본적으로 재생 목록을 먼저 지운 다음 새 트랙을 추가하고 싶습니다.
이 지시기를 각 컨트롤러로 어떻게 부를 수 있습니까?
지시어는 angle-soundmanager2 라이브러리의 지시어입니다. 지시문을 변경할 수 없으면 Luxor를 어떻게 처리합니까? –
원래 지시문의 이벤트를 반영하는 다른 (사용자) 지시문을 모두 둘러 쌉니다. – Luxor001
매우 근사하고 감사합니다. :-) –