我的控制器中有以下代码(该项目位于ionic 1中,并使用cordova-plugin-media 5.0.3插件):
.controller('AudioCtrl', function($scope) {
console.log('in AudioCtrl');
let AudioFiles =[
{
url:"sample.aac"
},
{
url:"8b2d52b76e71729c8073b8340f7c0607.m4a"
},
{
url:"test1.mp4"
}
];
$scope.MediaFiles = [];
$scope.$on('$ionicView.beforeEnter',function(){
angular.forEach(AudioFiles,function(val,key){
console.log('adding',val);
let tempMediaObject = new Media(val['url'],function(){
//mediaSuccess
},function(){
//mediaError
},function(){
//mediaStatus
});
$scope.MediaFiles.push(tempMediaObject);
});
console.log($scope.MediaFiles);
});
$scope.play = function(index){
console.log('play this file', $scope.MediaFiles[index]);
$scope.MediaFiles[index].play();
};
$scope.pause = function(index){
$scope.MediaFiles[index].pause();
$scope.MediaFiles[index].release();
};
$scope.stop = function(index){
$scope.MediaFiles[index].stop();
$scope.MediaFiles[index].release();
};
})
以及我页面中的以下代码:
<ion-view view-title="Audio">
<ion-content>
<ion-list>
<ion-item ng-repeat="audio in MediaFiles" type="item-text-wrap">
<div class="card">
<div style="white-space: normal;display: block;">File URL: {{audio.src}}</div>
<button class="button" ng-click="play($index)">Play</button>
<button class="button" ng-click="pause($index)">Pause</button>
<button class="button" ng-click="stop($index)">Stop</button>
</div>
</ion-item>
</ion-list>
</ion-content>
</ion-view>
问题是,当我尝试播放时,它总是从创建的第一个Media对象(sample.aac)播放音频文件。如您所见,我已经控制台记录了当我点击play时应该播放的文件,并且该文件是所选的正确文件,但是实际播放的始终是第一个文件。我也尝试了没有$ scope.MediaFiles [index] .release()调用的方法。这在android上工作正常,但在ios上工作不正常。我正在使用ios 13.2.3的iPhone X进行测试。任何人都有这个问题或知道任何解决方案吗?