我是AngularJS的初学者,我正在创建一个从API检索数据的应用程序。
问题是:我不知道如何访问我正在返回的对象,或者是否有更好的方法。
service.js
app.factory('Service', ['$resource', '$q',
function($resource, $q) {
var City = $resource('http://localhost:8000/:action?:q_params', {
action: 'api/city/',
q_params: '@params',
}, {
get: {
method: "GET",
isArray : false,
transformResponse: function(data, headers){
response = {}
response.data = data;
response.headers = headers();
return response;
}
}
});
return {
citiesByCountry: function(country_id) {
defer = $q.defer();
var data = [];
City.get({'country_id': country_id}).$promise.then(function(response) {
data.push.apply(data, JSON.parse(response.data));
defer.resolve(response);
}).
catch(function(response) {
alert(response.data.detail);
defer.reject(response);
});
return data;
},
};
}]);
control.js
app.controller('Control', ['$scope', 'Service',
function($scope, Service) {
$scope.func = function() {
var cities = Service.citiesByCountry('123');
console.log(cities);
console.log(cities.length);
for (var item in cities) {
console.log(item.name);
}
};
}]);
当我在控制器中调用该函数时,console.log会打印:
Array [Object]
0
显然,对象就在那里,但我不知道如何访问它。 我检查了一些问题,这个(Accessing objects returned from a factory)很好,但它没有解决我的问题,因为我还无法访问该对象。