簡體   English   中英

http調用Angular后如何更新全局變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM