我在javascript上非常糟糕,而且对Angular还是很陌生,所以请耐心等待。
我的服务器返回此消息:
{"latitude": 3.172398, "name": "Event", "longitude": 101.6739005}
services.js
var mapModule = angular.module('map.services', ['ngResource']); mapModule.factory('Event', function($resource) { return $resource('/custom_api/get_event_details/:eventId/', {eventId: '@id'}); });
controller.js
function mapCtrl($scope, Event) { var eventDetail = Event.get({eventId: $scope.eventId}); console.log(eventDetail); console.log(eventDetail.latitude); }
我正在尝试通过访问服务器返回的json,eventDetail.latitude但我正在获取undefined。
eventDetail.latitude
undefined
在控制台中,console.log(eventDetail)如下所示:
console.log(eventDetail)
e {$get: function, $save: function, $query: function, $remove: function, $delete: function} latitude: 3.172398 longitude: 101.6739005 name: "abc" __proto__: e
我得到的eventDetail是一个resource实例,但是如何直接获取值呢?
eventDetail
resource
如果已$scope.eventDetail在控制器中进行设置,则可以通过{{ eventDetail.latitude }}模板访问它。
$scope.eventDetail
{{ eventDetail.latitude }}
我到底如何在控制器中执行此操作?
从文档:
重要的是要意识到调用$ resource对象方法会立即返回空引用(对象或数组取决于isArray)。从服务器返回数据后,将使用实际数据填充现有引用。
因此,除非将其放入回调函数中,否则您的日志记录将无法正常工作,如下所示:
function mapCtrl($scope, Event) { Event.get({eventId: $scope.eventId},function(eventDetail){ //on success callback function console.log(eventDetail); console.log(eventDetail.latitude); }); }
如果您由于某种原因不想使用a resource,可以使用该$http服务:
$http
$http.get(url).then(function(response){console.log(response.data);});