2015-06-24 171 views
0

我有()

$scope.getMail=function(){ 
    $http.get(APISource). 
    success(function(data) { 



    $scope.mail =data; 



}). 
error(function(data) { 
    console.log("error"); 
    console.log(data); 

}); 


} 
这个功能我很节省$ scope.mail返回数据的成功

称为getMail的功能; 并且我还有另一个功能

function1()在同一个控制器中,但$ scope.mail不可访问。

请大家帮忙。

+2

'mail'可能因为不确定的'$ GET'是一个异步调用...当你调用功能1? – tymeJV

+0

调用getMail() –

回答

2

$http.get是异步执行的。这意味着$scope.mail的设置发生在单独的线程中,并且很可能在调用$ http.get之后在同一线程中不可用。

一个可能的解决方案可能是你想要$scope.mail做的一切移入success()回调的身体:

... 
success(function(data) { 
    $scope.mail =data; 
    function1(); 
}) 
... 
+0

是否能够使小提琴? –

+0

无需小提琴:https://docs.angularjs.org/api/ng/service/$http –

+0

@NishamMahsin我添加了一个代码示例。我没有看到一个片段将有助于解释这一点。 – wvdz

0

这里是一个小提琴是需要几个自由得到的东西和运行抓假(从的jsfiddle的API)数据:http://jsfiddle.net/jetweedy/8vxvfcf7/

var app = angular.module('app', []); 
app.controller('PhoneListCtrl', function ($scope, $http) { 
    $scope.getMail = function() { 
     $http.get("/echo/json/"). 
     success(function (data) { 
      $scope.mail = data; 
      console.log("success", $scope.mail); 
      $scope.function1(); 
     }). 
     error(function (data) { 
      console.log("error", data); 
     }); 
    } 
    $scope.function1 = function() { 
     console.log("function1", $scope.mail); 
    } 
    $scope.getMail(); 
});