我想调用我所拥有的宁静服务并填充控制器中的数据,以便我可以在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
}]
}
答案 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);
});
}