我想通过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