2015-06-24 169 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(); 
});