0

AngularJS のファクトリ メソッドとサービス メソッドを使用して、次の JSON 構造のプロパティにアクセスしようとしています。

{
    "@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
}
4

1 に答える 1

2

非同期 HTTP 要求を作成しています。同じ呼び出しサイクルで出力を単純に出力することはできません。queryこれを行うには、アクションに成功のコールバック ハンドラーを追加する必要があります。次に例を示します。

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

実際の例については、このプランカーを確認してください: http://plnkr.co/edit/TFlQ6cDkIA3rpjkvHtOA?p=preview

于 2013-03-04T12:25:02.423 に答える