我有一个服务, 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");
});
};
节省了一天。
答案 0 :(得分:1)
这很可能是因为ThingsService.getThing
发生在角度之外(通过帖子或者你有什么),所以之后直接登录的控制台不会显示它。如果您在控制台上记录了$scope
虽然它是一个引用,所以当您打开它时,您将看到它,因为ThingsService.getThing
可能已完成。您必须等到ThingsService.getThing
完成,直到您可以使用$scope.thing
。