无法访问函数外的$ scope

时间:2015-06-24 19:18:09

标签: javascript angularjs

我有一个名为getMail()的函数

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



  $scope.mail =data;



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

});


}

在这个函数的成功中,我将保存返回数据在$ scope.mail中; 而且我还有另一个功能

  

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

请帮忙。

2 个答案:

答案 0 :(得分:2)

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

一种可能的解决方案是将$scope.mail的所有内容移动到success()回调的正文中:

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

答案 1 :(得分: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();
});