我想在控制器功能之外使用single_video變量。它在第一個控制檯日誌中打印良好。但是它給出了single_video是第二個console.log中的未定義錯誤,它在控制器函數之外。由於異步性。如何從angularjs異步調用定義一個全局變量?
var single_video;
var app = angular.module('myApp', []);
app.controller('randomVideo', function($scope, $http) {
var onSuccess = function(response){
$scope.video = response.data;
single_video = $scope.video;
//First console.log
console.log('1st ID='+single_video.yt_id);
};
var onError = function(reason){
$scope.error = "There is an error about getting random_video.php";
};
$http.get("http://www.ytmdb.com/ytvideo/api/random_video.php")
.then(onSuccess, onError);
});
//Second console.log
console.log('2nd ID='+single_video.yt_id);
你打成什麼作爲*「第二console.log「*實際上是第一個console.log。你所要求的是根本不可能的。 「second」console.log將永遠無法爲您提供該值。 –
@KevinB他們是一樣的,但我得到了第二個「未定義」的錯誤。第二個console.log在single_video由於異步定義之前打印。有沒有辦法使用回調函數等等。我的jacascript背景非常差。 – Tahtakafa
在回調運行後,您必須訪問全局變量**。因此,訪問全局變量的代碼必須位於回調中或從回調中調用。但是,現在不需要全局變量了。 –