2013-03-01 3 views
0

Я пытаюсь получить доступ к свойствам следующей структуры JSON через AngularJS фабричные и услуги методов:Невозможно получить доступ к свойствам JSON коды через angularJS службы

{ 
    "@context": { 
     "firstname": "http://xmlns.com/foaf/0.1/firstname", 
     "lastname": "http://xmlns.com/foaf/0.1/lastname" 
    }, 
    "members":[ 
     { 
      "firstname":"Debjit", 
      "lastname":"Kumar" 
     }, 
     { 
      "firstname":"Hari", 
      "lastname":"Haran" 
     }, 
     { 
      "firstname":"Kaushik", 
      "lastname":"Shrestha" 
     } 
    ] 
} 

Но я не могу получить свойства извлеченного объекта JSON , Ниже мой angularJS код:

angular.module('rdfa',['ngResource']).config(['$routeProvider', function ($routeProvider) { 
    $routeProvider.when('/', {controller: RdfaCtrl}); 
}]) 
.factory('members', function($resource){ 
    return $resource('Json.json', {}, { query: {method:'GET', isArray:false} }); 
}) 
.service('jsonservice',function(members){ 
    this.members=members.query(); 
}); 
function RdfaCtrl($scope,jsonservice){ 
    $scope.members=jsonservice.members.members; 
    console.log(jsonservice.members); // outputs correct JSON structure 
    console.log(jsonservice.members.members); // outputs undefined 
    console.log(jsonservice.members['@context']); // outputs undefined 
} 

ответ

2

Вы делаете запрос асинхронный HTTP, вы не можете просто напечатать вывод на том же цикле вызова. Для этого вам нужно добавить обработчик успеха обратного вызова в query действия, например:

members.query(function(value) { 
    console.log(value); // Resource object 
    console.log(value.members); // members object  
    console.log(value['@context']); // @context object 
}); 

Проверить это plunker для рабочего примера: http://plnkr.co/edit/TFlQ6cDkIA3rpjkvHtOA?p=preview

Смежные вопросы