代码之家  ›  专栏  ›  技术社区  ›  user1491636

匿名函数中的$scope

  •  1
  • user1491636  · 技术社区  · 10 年前

    我有以下内容:

    app.controller('MyController', function($scope, MyAdapter) {       
       MyAdapter.getContactInfo(123, function(response) {
          $scope.contactInfo = JSON.parse(response.result);
       });        
    }
    
    app.service("MyAdapter", function() {
        this.getContactInfo = function(id, callback) {          
            thirdPartyAPI(id, callback);            
        };
    });
    

    实际上,我的控制器调用一个服务来调用第三方api中的异步函数。我需要用响应更新控制器中的作用域,但我似乎无法从匿名函数访问作用域。有办法解决这个问题吗?

    1 回复  |  直到 10 年前
        1
  •  3
  •   Anthony Chu    10 年前

    您应该可以访问回调中的作用域。可能发生的情况是,因为这是一个更新范围的第三方异步调用,angular对此一无所知 $scope.$apply() 以触发消化循环。

    app.controller('MyController', function($scope, MyAdapter) {       
       MyAdapter.getContactInfo(123, function(response) {
          $scope.contactInfo = JSON.parse(response.result);
          $scope.$apply();
       });        
    }