我已阅读angularjs教程,现在我正在尝试在symfony应用程序中使用。
我已经实现了一个rest客户端资源。响应json对象具有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]
是的,在这个对象中我看到了条目,但我想以某种方式将它转换为数组:)
答案 0 :(得分:3)
您的代码没有任何“重大”错误,但如果您收到$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 http://plnkr.co/edit/Geklnp
答案 1 :(得分:-1)
在最糟糕的情况下,您可以使用javascript
transformResponse: function (data) {
var arrayData = [];
for( var i in data) {
if (data.hasOwnProperty(i)){
arrayData .push(data[i]);
}
}
},