[英]How to update global variable after http call Angular
我有一個全局變量,我需要在http get調用后更新。 更新后,我需要將此更新的變量傳遞給其他函數。 我無法理解這樣做的最佳方法是什么。 這是我的代碼:
app.controller('myCtrl', function($scope, $http) {
var data = '';
$http.get("data.json")
.then(function(response) {
data = response.data;
});
vm.mapOptions = {
controls: {
navigator: false
},
center: [40, -35],
zoom: 3,
layers: [{
style: {
fill: {
color: '#1996E4'
},
stroke: {
color: '#FFFFFF'
}
},
type: 'shape',
dataSource: data
}],
shapeCreated: onShapeCreated,
shapeFeatureCreated: onShapeFeatureCreated
};
});
是否可以在http調用后更新全局變量?
提前感謝您的幫助。
當您執行http請求時,發送請求並獲得響應需要一些時間,特別是當您將請求發送到服務器上的API時,但同時執行會立即繼續執行並且執行http調用后的語句如果你有一些取決於響應的東西,那么大多數都會失敗。
在你的情況下, vm.mapOptions
依賴於data
,這是一個從get請求獲取vm.mapOptions
的局部變量。 所以,你可以做什么?
步驟1 :
為與您的回復有關的所有代碼創建一個函數:
$scope.myCallBack = function(data){
vm.mapOptions = {
controls: {
navigator: false
},
center: [40, -35],
zoom: 3,
layers: [{
style: {
fill: {
color: '#1996E4'
},
stroke: {
color: '#FFFFFF'
}
},
type: 'shape',
dataSource: data
}],
shapeCreated: onShapeCreated,
shapeFeatureCreated: onShapeFeatureCreated
};
}
第2步:在獲得響應后立即調用$ http.get中的myCallBack函數
var data = '';
$http.get("data.json")
.then(function(response) {
data = response.data;
$scope.myCallBack(data);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.