如何在angularjs中使用$ resource

时间:2013-10-31 09:33:40

标签: ajax json angularjs

我正在尝试从此网址http://api.geonames.org/citiesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo

获取数据

通过以下$资源是我的资源代码

angular.module('myApp.services', ['ngResource']).
 value('version', '0.1').factory('recipes1',['$resource', '$http', '$log', function  ($resource, $http, $log) {
return $resource('http://api.geonames.org/citiesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo',{ },{   locate: {method: 'GET', isArray: true, transformResponse: $http.defaults.transformResponse.concat(function(data, headersGetter) {
  // probably be better if you examined the results in here
alert(data);

 })}
});
}]);

但我没有得到回复。我正从控制器那里出来

function Resource(value){
"use strict";

    copy(value || {}, this);
  } 

1 个答案:

答案 0 :(得分:0)

$http与promise工厂一起使用:

fiddle

中查看工作演示

<强> JS

var fessmodule = angular.module('myModule', ['ngResource']);

fessmodule.controller('fessCntrl', function ($scope, Data) {

    $scope.runMe = function () {

        Data.query($scope.url)
                        .then(function (result) {
                           $scope.data = result;

                        }, function (result) {
                            alert("Error: No data returned");
                        });    
    }

});

fessmodule.$inject = ['$scope', 'Data'];

fessmodule.factory('Data', ['$http','$q',  function($http, $q) {

     var data = $http({method: 'GET', url: 'http://api.geonames.org/citiesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo'});

       var factory = {
            query: function (address) { 
                var deferred = $q.defer();              
                deferred.resolve(data);               
                return deferred.promise;
            }
        }
        return factory;
}]);