访问工厂AngularJS返回的对象

时间:2017-05-16 22:10:52

标签: angularjs angular-resource

我是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)很好,但它没有解决我的问题,因为我还无法访问该对象。

0 个答案:

没有答案