Angularjs 该值在元素为对象的数组中消失

Angularjs 该值在元素为对象的数组中消失,angularjs,Angularjs,代码如下: $scope.get_candidate(); console.log($scope.voteData); $scope.get_candidate = function () { var postData = { department: $scope.voteData.department, group: $scope.voteData.group };

代码如下:

$scope.get_candidate();
console.log($scope.voteData);

$scope.get_candidate = function () {
            var postData = {
                department: $scope.voteData.department,
                group: $scope.voteData.group
            };
            $http.post('/admin/r_candidate', postData)
                .success(function (response) {
                    $scope.voteData.candidates = response.data.candidateInfos;
                });
        };
控制台打印:

Object {candidates: Array[0], vote_begin: true, department: "机械与运载工程学部", vote_type: "预选", ballot_type: "记分"}
我们可以看到候选者是一个空数组,当我使用$scope.voteData发出http post请求时,候选者是空的。但当我看到细节时:

Object
ballot_type:"记分"
candidates:Array[4]
department:"机械与运载工程学部"
vote_begin:true
vote_type:"预选"
__proto__:Object
我们可以看到候选者有四个元素,这是我所期望的,因为$http.post('/admin/r_candidate',postData)返回:

 {status: 0, data: {candidateInfos: [,…], total: 4}}
data:{candidateInfos: [,…], total: 4}

我不知道为什么候选者会变成一个空数组。

这是异步javascript经常出现的逻辑问题

当你跑的时候

$scope.get_candidate(); //async data inside
console.log($scope.voteData);
它运行
console.log()
的速度比从$http
请求中得到的结果快

您可以/应该在
success
函数中处理结果

$http.post('/admin/r_candidate', postData)
  .success(function (response) {
    console.log(response.data);
    $scope.voteData.candidates = response.data.candidateInfos;
});
也就是说,根据您的angularjs版本,您应该使用。

我认为“更快”是一个不恰当的词选择:即使查询速度足够快,可以在任何
控制台之前返回。记录
之后的内容,这也无所谓。谢谢。“承诺”是解决我问题的最好办法