$ http.get内的AngularJS访问变量

时间:2015-04-19 18:56:35

标签: angularjs angularjs-scope angularjs-controller angular-http angularjs-http

app.controller('EntryCtrl', ['$scope', '$http', function($scope, $http){
    $http.get(something.json).success(function(data){
      $scope.entries = data;
    });
    abc = $scope.entries.timestamp;  <-- not working
}]);

搜索后,发现$ http是一个异步函数。所以我将它包装到一个函数中,但仍然无效。

app.controller('EntryCtrl', ['$scope', '$http', function($scope, $http){
    var getEntries = function(){ return
      $http.get(something.json).success(function(data){
        return data;
      });
    };

    $scope.entries = getEntries();
    console.log($scope.entries); // returns undefined
}]);

1 个答案:

答案 0 :(得分:1)

你的console.log在你的承诺毫无疑问地回来之前就开始了。将console.log置于成功之中。

我可能会这样写:

var getEntries = function(){ 
      $http.get(something.json).success(function(data){
        $scope.entries = data;
        console.log($scope.entries);
      });
    };

    getEntries();

此外,如果它仍然存在问题,可以使用console.log(数据),看看你得到了什么。这可能是一个后端问题。

Here is a plunker 显示了我的意思。你不应该像你一样将它包装在一个函数中。 $ http.get已经是函数。}