2016-11-04 90 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看到 –

相關問題