2014-08-28 101 views
0

我通过$ http.get返回一个JSON对象。我能够得到结果集,它是一个数组,但是当我尝试访问fetch()之外的对象时,我得到的是未定义的。不知道我错过了什么,为了做到这一点,任何帮助表示赞赏。在函数范围外使用提取数据的角度?

谢谢吉米。

 myObject.fetch().then(function(myData) { 
      $scope.myData = myData; 
     }); 

     console.log($scope.myData) 
+0

这是你的代码实际上看起来如何?在这种情况下,'console.log'将在回调函数实际运行之前运行并设置'$ scope.myData' – 2014-08-28 11:40:52

+1

将'console.log(1)'放入回调函数中,类似的编号为2 “外面。运行并查看结果。思考? – zerkms 2014-08-28 11:41:41

+0

那么我需要setTimeout? – Jimi 2014-08-28 11:42:15

回答

2

$ scope.myData是不确定的,直到取()执行完毕,并调用传递的回调函数。

在你的榜样

的console.log()被称为myObject.fetch()

在下面的例子完成之前,将最有可能的工作(不这样做!)

setTimeout(function(){ 
console.log($scope.myData) 
}, 2000); 

我不会告诉你这样做,实际上它是一种非常糟糕的方式。最佳做法是仅在回调函数中使用该范围变量,因为在实际设置的位置。