調用JavaScript對象我有一個部分與下面的代碼片段如何從一個局部
<div id="playDiv" ng-show="audioAvailable">
<br/>
<button play-pause-toggle data-play="Play" data-pause="Pause">Play</button>
<button ng-click="soundManager.sounds[soundManager.soundIDs[0]].play()">Play</button>
</div>
我解決,其中來自角soundmanager2庫的播放暫停切換指令未能問題工作。它在我第一次加載頁面時工作。如果我加載第二個聲音,我有刪除其他聲音的代碼。 這將刪除其他聲音,但新聲音不播放。 如果我在控制檯內的ng-click內運行代碼,則聲音播放......並且在我從控制檯播放聲音後,播放暫停切換按鈕再次運行。
如何使ng-click指令調用soundManager.sounds [soundManager.soundIDs [0]]。play()?
以下是清除舊聲音的控制器代碼。
angular.module('infosystem',['angularSoundManager']).controller("insightsDetailCtrl", function ($scope, $stateParams, $rootScope, $http, $sce) {
var debug = true ;
SC.initialize({
client_id: "YOUR_SOUNDCLOUD_CLIENT_ID"
});
if (!$rootScope.soundManagerObjects) {
$rootScope.soundManagerObjects = [] ;
}
function soundManagerIdCheck(id){
var result = false ;
if (soundManager) {
var sound = soundManager.getSoundById(id) ;
if (sound) {
result = true ;
}
}
return result ;
}
function asyncLoop(o) {
var i = -1;
var loop = function() {
i++;
if(i == o.length) {
o.callback();
return;
}
o.functionToLoop(loop, i);
};
loop(); //init
}
$scope.loading_insights = true;
$scope.load_insight = function (insight_id) {
$scope.loading_insights = true;
$http({
method: 'GET',
url: $rootScope.serverURL + 'insights/' + insight_id,
headers: {
'Accept': 'application/json'
}
})
.success(function (data) {
$scope.loading_insights = false;
data.description=$sce.trustAsHtml(data.description);
data.audio=$sce.trustAsHtml(data.audio);
$scope.insight = data;
$rootScope.audioAvailable = false ;
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 ;
$rootScope.smId = sm_object.id ;
var smIdsLength = soundManager.soundIDs.length;
asyncLoop({
length: smIdsLength,
functionToLoop: function(loop, i) {
setTimeout(function() {
//custom code
var soundManagerId = soundManager.soundIDs[0] ;
if (soundManagerIdCheck(soundManagerId)){
soundManager._wD('soundManager.stop(' + soundManagerId + ')', 1);
}
if (soundManagerId) {
if ($rootScope.smId != soundManagerId) {
soundManager.destroySound(soundManagerId);
}
}
//custom code
loop();
}, 100);
},
callback: function() {
//callback custom code
//callback custom code
}
}
);
}) ;
}
})
.error(function (error) {
$scope.loading_insights = false;
})
}
$scope.load_insight($stateParams.insight_id);
})
這就是我所做的。 –