在angular中显示$ scope的undefined

时间:2017-09-11 18:39:00

标签: javascript angularjs api

这是我的代码

var exchange = angular.module('app', []);
    exchange.controller('ExchangeController', ExchangeController);

    function ExchangeController($scope, $http) {

        $scope.items = [];
        $http
            .get(window.location.origin + "/api/get-item/", {
                transformRequest: angular.identity,
                headers: {'Content-Type': undefined, 'Process-Data': false}
            })
            .then(function(response){
                $scope.items = response.data.items;
                console.log($scope.items);
            });

        console.log($scope.items);

    }

这里我的第一个控制台日志正常工作,但第二个显示未定义。为什么呢?

2 个答案:

答案 0 :(得分:1)

第二个写入console.log($scope.items);应该将一个空数组记录到控制台。原因是$http.get正在执行异步调用。这导致then块的代码执行被推迟到http请求完成,并允许其余代码继续。如果这是您对异步代码的第一次介绍,我建议您查看angular's documentation - 请参阅一般用法。和Javascript作为一个整体的承诺。

还要考虑我为您演示的example演示异步操作。

答案 1 :(得分:0)

这是因为$http块正在运行异步。当来电到达console.log($scope.items)时,http请求可能尚未返回,因此该项目为undefined