AngularJS资源 - 在控制器内填充范围数据

时间:2014-01-16 15:08:06

标签: angularjs

我想调用我所拥有的宁静服务并填充控制器中的数据,以便我可以在JVector地图上填充数据。我很有可能采取错误的方法(应该使用指令)。我知道该服务工作正常,我收到了我期望的数据。但是,当我通过console.log检查json中的数据时,我得到了未定义。我相信这是因为我只是收到了一个承诺并且数据实际上没有被填充,直到我在页面上显示它。我很可能做错了什么。

任何建议都将不胜感激。

模块:

var app = angular.module('app', ['ngResource']).
        factory('mapDataSvc', function ($resource) {
            return $resource('api/sites', {});
        });

控制器:

var mapCtrl = function ($scope, mapDataSvc) {
    //http://coder1.com/articles/consuming-rest-services-angularjs
    $scope.mapData = {};

    mapDataSvc.query(function (response) {
        // Assign the response INSIDE the callback
        $scope.mapData = response;
    });

//I see the sites array in this log output
console.log($scope.mapData);

//This is showing undefined.
    console.log($scope.mapData.Sites);

}

示例JSON:

{
    Sites: [{
        VendorName: "MyVendor",
        SystemHardwareId: 111111,
        Longitude: 45.22,
        Longitude: -71.0418
    }]
}

1 个答案:

答案 0 :(得分:0)

似乎在mapData在mapDataSvc.query中初始化之前执行了console.log。尝试将其移动到mapDataSvc.query中,如下所示:

var mapCtrl = function ($scope, mapDataSvc) {
//http://coder1.com/articles/consuming-rest-services-angularjs
$scope.mapData = {};

mapDataSvc.query(function (response) {
    // Assign the response INSIDE the callback
    $scope.mapData = response;

   //I see the sites array in this log output
    console.log($scope.mapData);

   //Should be not undefined.
   console.log($scope.mapData.Sites);
});

}