从1个服务(angularjs)执行多个请求

时间:2013-10-17 09:41:11

标签: javascript angularjs angular-resource

我是AngularJs的新手,我想从我的服务中执行多个请求。 到目前为止,我只设法执行了一个请求:

我的服务文件:

ticketServices.factory('Category', ['$resource',
    function($resource){
        var resource = $resource(
            baseUrl('/admin/ticket/?format=json'), {}, { 
                query: {
                    method:'GET',
                    params: {},
                    isObject: true
                }
            });
            return resource;
    }
]);

我的控制器文件:

ticketApp.controller('ticketCtrl', ['$scope', 'Category', function ($scope, Category) {
    Category.query();
}]);

我希望能够这样做:

Category.fecthCities();
Category.fetchMessage();

但我无法弄清楚如何将这些请求添加到我的服务中。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

如果我理解你,那应该是:

<强> JS

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

    $scope.alertSwap1 = function () {   
        Data.fecthCities()
                        .then(function (result) {
                           $scope.cities = result;

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

     $scope.alertSwap2 = function () {   
        Data.fetchMessage()
                        .then(function (result) {
                           $scope.message = result;                           
                        }, function (result) {
                            alert("Error: No data returned");
                        });

    };

});

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

fessmodule.factory('Data', ['$resource','$q',  function($resource, $q) {
    var cities = [
    {
        "city": "Tel Aviv"
    }
    ]; 

     var message = [
    {
        "MyMessage": "Hello mate"
    }
    ]; 

       var factory = {
            fecthCities: function () {
                var deferred = $q.defer();

                deferred.resolve(cities);

                return deferred.promise;
            },
            fetchMessage: function () {
                var deferred = $q.defer();

                deferred.resolve(message);

                return deferred.promise;
            }

        }
        return factory;
}]);

工厂有两种方法:fecthCitiesetchMessage

您可以使用GET资源替换静态var cities /消息。

演示 Fiddle