2016-11-04 92 views
0

我试图让媒体播放器使用离子angularjs,所有大部分完成,但是当运行应用程序,然后点击播放获取错误ReferenceError: media is not defined有没有人有建议!我也从API文档中使用了媒体播放器的完整示例。我此刻的代码如下所示:ReferenceError:媒体没有定义

angular.module('starter', ['ionic','ngCordova']) 

.run(function($ionicPlatform) { 
    $ionicPlatform.ready(function() { 
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard 
    // for form inputs) 
    if(window.cordova && window.cordova.plugins.Keyboard) { 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
    } 
    if(window.StatusBar) { 
     StatusBar.styleDefault(); 
    } 
    }); 
}) 

.controller('ctrl',function($scope,$cordovaMedia,$cordovaFile,$ionicLoading){ 


$scope.data = new Object(); 
var src = "sweet.mp3"; 
//var media = new Media(src, null, null, mediaStatusCallback); 


$scope.init = function() { 
    var media = new Media(src, null, null, mediaStatusCallback); 
}; 
    //var media = new Media(src, null, null, mediaStatusCallback); 
    $scope.play = function(){ 
    media.play(); 
     } 
     // Update media position every second 
      $scope.mediaTimer = setInterval(function() { 
      // get media position 
      media.getCurrentPosition(
     // success callback 
     function (position) { 
      if (position > -1) { 
       console.log((position) + " sec"); 
       $scope.adjust = position; 
      } 
     }, 
     // error callback 
     function (e) { 
       console.log("Error getting pos=" + e); 
     } 
     ); 
     }, 1000); //calling mediaTimer function in every 1 second 

    $scope.stop = function(){ 
    console.log("stop"); 
    media.stop(); 
} 
$scope.pause = function(){ 
    media.pause(); 
} 
$scope.seek = function(){ 
    console.log("Seek to, duration :" + media._duration); // media._duration = length of song (in seconds) 
    var time = media._duration * 1000; // time = length of song (in milliseconds) 
    var adjustingSong = (time/100) * $scope.adjust; // algo to get relation btw rang and length of any song 

    media.seekTo(adjustingSong); 
} 

$scope.duration = function(){ 
    console.log("duration" + media._duration); 
//media.getDuration(media); 
//console.log("time : "+ JSON.stringify(media)); 


} 


//$scope.song(); 

var mediaStatusCallback = function(status) { 
    console.log("media status call back called.!"); 
    if(status == 1){ 
     $ionicLoading.show({template: 'Loading...'}); 
    } else { 
     $ionicLoading.hide(); 
    } 
} 

}); 

但是,它并没有当我玩工作,感谢

回答

0
.controller('ctrl',function($scope,$cordovaMedia,$cordovaFile,$ionicLoading){ 


$scope.data = new Object(); 
var src = "sweet.mp3"; 
var media; //Declare variable here so it's usable in controller functions 

init(); //Initialize media 
//$scope.play can now be called without `ReferenceError` 
function init() { 
media = new Media(src, null, null, mediaStatusCallback); 
}; 

2个问题:

  • 你不是实际调用init代码中的任何地方,这是实例化media的代码块。另外,如果你实际上没有在你的模板中使用它(初始化函数通常就是这种情况),你不必将它放在$scope上。

  • 变量是函数的作用域,所以如果你没有在你的init函数之外声明media,它实际上并不在它之外。

+0

仍然出现错误,请问编辑回答意味着给我完整的代码。谢谢 –

+0

@ALIGHASSAN我加入了相关的代码 –

+0

http://d.top4top.net/p_308k0ab81.png看到 –

相关问题