无法访问$ scope变量的一个函数

时间:2016-04-03 18:26:54

标签: arrays angularjs scope

我在控制器中定义了一个变量:

app.controller('myController',['$scope','ajaxCall',function($scope,ajaxCall){
  $scope.interviewer = {};
  ajaxCall.get(/* A url */).then(function(response){
    $scope.interviewer = response.data;
    console.log($scope.interviewer);
});
console.log($scope.interviewer);

ajaxCall是一个自定义服务,用于进行ajax调用。内部控制台工作正常(即显示完整的数据),但外部控制台正在打印一个空对象。为什么?

1 个答案:

答案 0 :(得分:2)

因为 AJAX 中的第一个 A 意味着“异步”。

传递给then()的函数在最后console.log()行之后的很长一段时间内异步执行 。一旦对异步HTTP请求的响应从服务器返回,它就会被执行。

如果它是同步的,我们不会打扰promises和回调函数。我们会做的

var response = ajaxCall.get(url);

但这是不可能的,所以我们

ajaxCall.get(/* A url */).then(function(response){

表示:请发送此请求,当响应可用时,请调用此函数。在此期间我会做很多其他的事情。