当我尝试获取变量时,$ scope的行为不正确

时间:2015-01-23 15:46:31

标签: angularjs angularjs-scope

我有一个服务, ThingsService ,它与我的API有关。我还有this great answer之后的SharedData服务。到目前为止,我可以告诉和测试,SharedData不是问题。

控制器 ThingsController 使用此服务将数据导入应用程序,如下所示:

$scope.getThing = function(id){
  ThingsService.GetThing(id,
    function(response){
      $scope.thing = response;
    },
    function(){
      alert("Error");
    });
};

$scope.getThing(SharedData.getNextThingId());
console.log($scope.thing); // => undefined
console.log($scope); // => thing, among others

现在,当我尝试访问$scope.thing时,它返回undefined。 有趣的是,如果我执行类似console.log($scope)的操作,则会有一个名为thing的对象,而且所有正确的数据都在此对象中设置。

有没有人知道发生了什么?我很确定我错过了什么。

更新:关注Mathew的asnwer,此片段

$scope.getThing = function(id){
  ThingsService.GetThing(id,
    function(response){
      $scope.thing = response;
      $scope.doStuffwhenThingIsReady(); //<- Here $scope.thing is set :)
    },
    function(){
      alert("Error");
    });
};

节省了一天。

1 个答案:

答案 0 :(得分:1)

这很可能是因为ThingsService.getThing发生在角度之外(通过帖子或者你有什么),所以之后直接登录的控制台不会显示它。如果您在控制台上记录了$scope虽然它是一个引用,所以当您打开它时,您将看到它,因为ThingsService.getThing可能已完成。您必须等到ThingsService.getThing完成,直到您可以使用$scope.thing