Angular.js $资源数据处理

时间:2013-04-18 19:15:04

标签: javascript ajax angularjs

我有一个服务器端REST api,它可以返回任意结构的jsonyfied数据。在客户端,我有一个Angular应用程序。

定义资源:

module.factory('SearchQueries', function ($resource){          
   return $resource('/instances/searches/:_id', {_id: '@_id'}); 
})                                                             

我尝试从api获取数据后:

$scope.search_queries = SearchQueries.query(null, function(args){  
  console.log('success: ', args);                                  
  for (i in args) {                                                
  }                                                                
}); 

客户端接收具有有类结构的数据:

{"2": "serfgserg", "3": "sdfgdfg", "4": "sdgdfhdfghfgh", "5": "sdgdfhdfghfgh"}

但是!在Angular资源的成功函数中,数据的每个符号都是一个元素对象的值。

[{"0":"s","1":"e","2":"r","3":"f","4":"g", e.t.c

为什么要这样做?如何正确预防或使用它?

编辑:

如果我从服务器返回一个数组:

res = json.dumps(["sdf", "asdf", "asdf"])                             
return Response(response=res, mimetype='application/json',
        status=status)

别介意我有相同的结果:

[{"0":"s"},{"0":"d"},{"0":"f"},{"0":"a"},{"0":"s"},{"0":"d"},{"0":"f"} // e.t.c     

1 个答案:

答案 0 :(得分:1)

因为query需要一个对象数组而不是一个对象,所以会发生这种情况 - 请参阅the ngResource documentation

  

'query':{method:'GET',isArray:true}

期望类似:

[{"name":"sdf"}, {"name":"asdf"}, {"name":"asd"}]