无法通过angularJS服务访问JSON code的性能 [英] Unable to access properties of JSON code through angularJS service

查看:99
本文介绍了无法通过angularJS服务访问JSON code的性能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过AngularJS工厂和服务方法来访问以下JSON结构的属性:

  {
    @context:{
        名字:http://xmlns.com/foaf/0.1/firstname
        姓氏:http://xmlns.com/foaf/0.1/lastname
    },
    成员:
        {
            名字:Debjit
            姓氏:库玛
        },
        {
            名字:哈日,
            姓氏:哈兰
        },
        {
            名字:考希克
            姓氏:什雷斯塔
        }
    ]
}

但我不能检索检索JSON对象的属性。
以下是我angularJS code:

  angular.module('RDFa的',['ngResource'])。配置(['$ routeProvider',函数($ routeProvider){
    $ routeProvider.when('/',{控制器:RdfaCtrl});
}])
.factory('会员',函数($资源){
    返回$资源('Json.json',{},{查询:{方法:GET,IsArray的:假}});
})
。服务('jsonservice',函数(成员){
    this.members = members.query();
});
功能RdfaCtrl($范围,jsonservice){
    $ scope.members = jsonservice.members.members;
    的console.log(jsonservice.members); //输出正确的JSON结构
    的console.log(jsonservice.members.members); //输出未定义
    的console.log(jsonservice.members ['@环境']); //输出未定义
}


解决方案

您正在一个异步HTTP请求时,你不能只是简单地打印在同一呼叫周期的输出。为了做到这一点,你需要在查询添加成功回调处理程序的行动,例如:

  members.query(函数(值){
  的console.log(值); //资源对象
  的console.log(value.members); //成员对象
  的console.log(值['@环境']); // @context对象
});

勾选此plunker一个工作示例: http://plnkr.co/edit / TFlQ6cDkIA3rpjkvHtOA?p = preVIEW

I am trying to access properties of the following JSON structure through AngularJS factory and service methods:

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

But I am not able retrieve properties of the retrieved JSON object. The following is my angularJS code:

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
}

解决方案

You are making an asynchronous HTTP request, you cannot just simply print the output on the same call cycle. In order to do that you need to add a success callback handler in the query action, for example:

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

Check this plunker for a working example: http://plnkr.co/edit/TFlQ6cDkIA3rpjkvHtOA?p=preview

这篇关于无法通过angularJS服务访问JSON code的性能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆