2013-03-01 73 views
0

我试图通过AngularJS工厂和服务方法来访问以下JSON结构的属性来访问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