【问题标题】:cannot access $scope variable out side a function无法访问函数外部的 $scope 变量
【发布时间】:2016-04-03 18:26:54
【问题描述】:

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

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 调用。内部控制台工作正常(即显示完整数据)但外部控制台正在打印一个空对象。为什么?

【问题讨论】:

    标签: arrays angularjs scope


    【解决方案1】:

    因为AJAX中的第一个A表示“异步”。

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

    如果它是同步的,我们就不会使用 Promise 和回调函数。我们会做的

    var response = ajaxCall.get(url);
    

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

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

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

    【讨论】:

    • 感谢@JB Nizet。我知道这个概念但想不出它是原因。但是我必须在控制器的大部分部分使用数据,所以如何做到这一点我不想在 then() 中编写很多代码功能。
    • 声明一个函数function init(response) { ... },并使用ajaxCall.get(url).then(init);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2017-01-16
    • 2017-05-25
    • 2014-01-29
    相关资源
    最近更新 更多