私は、angle-soundmanager2を使用してsoundcloudからトラックを再生するアプリケーションを作成しています。それは動作しますが、2番目のトラックを再生すると、2番目のトラックの前に最初のトラックが再び再生されます。角度コントローラ内でngDirectiveを呼び出す方法は?
次のディレクティブで作成された[プレイリストのクリア]ボタンを手動でクリックしてから、2番目のページを読み込むと、この問題は解決されます。
<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にアクセスできます。 まず、プレイリストをクリアしてから、新しいトラックを追加したいと思います。
どのように私はこのコントローラを角度コントローラと呼んでいますか?
このディレクティブは、angle-soundmanager2ライブラリからのものです。あなたがルクソールをどのように扱うのでしょうか? –
オリジナルディレクティブのイベントを反映する別の(あなたの)ディレクティブを囲みます。 – Luxor001
非常にクールでありがとう:-) –