如何在AngularJS中从资源的查询方法返回中获取数组?
我已经阅读了angularjs教程,现在我正在尝试在symfony应用程序中使用。 我已经实现了一个rest客户端资源。响应json对象有一个如何在AngularJS中从资源的查询方法返回中获取数组?,angularjs,angular-resource,Angularjs,Angular Resource,我已经阅读了angularjs教程,现在我正在尝试在symfony应用程序中使用。 我已经实现了一个rest客户端资源。响应json对象有一个sportEvents属性,它是一个数组。它被取走了 var sportServices = angular.module('sportServices', ['ngResource']); sportServices.factory('sportClient', ['$resource', function($resource){ retu
sportEvents
属性,它是一个数组。它被取走了
var sportServices = angular.module('sportServices', ['ngResource']);
sportServices.factory('sportClient', ['$resource',
function($resource){
return $resource('rest/sport/events.json', {}, {
query: {
method:'GET',
transformResponse: function (data) {return angular.fromJson(data).sportEvents},
isArray: true // The sportEvents property is an array.
}
});
}]);
和我的控制器:
var sportControllers = angular.module('sportControllers', []);
sportControllers.controller('SportEventListCtrl', ['$scope', 'sportClient',
function($scope, sportClient) {
$scope.sportEvents = sportClient.query();
}]);
sportClient.query()代码>这不是数组,我无法迭代它。这就是我的问题,我如何才能实现sportClient.query()返回一个数组?因为我必须对元素进行分组,为此我需要迭代元素
下面是一个样本回答:
{"sportEvents": [{id: 2234, number: 43545, name:"random"}, {id: 2235, number: 43546, name:"random"}]}
但有趣的是:
console.log(BetClient.query())代码>在控制器中,该命令在控制台中给出以下结果:
[$promise: Object, $resolved: false]
是的,在这个对象中我看到了条目,但我想以某种方式将其转换为数组:)在最坏的情况下,您可以使用javascript
transformResponse: function (data) {
var arrayData = [];
for( var i in data) {
if (data.hasOwnProperty(i)){
arrayData .push(data[i]);
}
}
},
您的代码没有任何“重大”错误,但如果您收到$promise
,请首先解决它,而不是直接将其分配给$scope.sportEvents
对于异步调用,如$http
,您将收到一个承诺,即是的,将返回一些内容。操作完成后,您可以解析数据承诺,或者在出现错误时拒绝它
所以这项服务
app.factory('JsonResource', function($resource) {
return $resource('events.json', {}, {
query: {
method: 'GET',
transformResponse: function(data) {
return angular.fromJson(data).events;
},
isArray: true
}
});
});
用法
app.controller('MyCtrl', function($scope, JsonResource) {
// No direct assignment here, resolve first, then assign
JsonResource.query().$promise.then(function(data) {
$scope.events = data;
});
});
应该可以很好地使用JSON
格式
{
"id": 1,
"events": [{
"id": 2234,
"number": 43545,
"name": "random"
},{
"id": 2235,
"number": 43546,
"name": "random"
}]
}
请参见此处的相关Plunker您能发布服务器端代码返回的JSON示例吗?我已经添加了,但这并不重要,因为sportClient.query();不返回JSON数组:)它返回一个地狱男孩:D angularJS自动将其转换为另一个JSON对象,该对象对于视图是可迭代的,但是。。。您好:D我想在控制器中迭代它,但我不能,这是我最大的问题:DDid plunker帮助您吗?在控制器中:console.log(BetClient.query())
命令给了我这个对象:[$promise:object,$resolved:false]
,但我想返回我的数组:DBetClient.query(函数(数据){console.log(数据)})返回angular.fromJson(数据).events代码>-愚蠢的我,只是假设JS响应会被解码!难怪我没有行可以迭代!