AngularJs ngResource工厂。 Var返回函数而不是promise

时间:2015-10-26 17:43:06

标签: angularjs ngresource

我正在以角度编写一个使用两组数据的工厂。我需要一组数据来等于一个变量,所以我可以在另一个API调用中传递它。由于某种原因,我的变量总是返回整个函数,而不是只返回变量。所有环境变量都可用。

var zones = function(){
            var deferred = $q.defer();
            $resource(ENV.web_api_url + ENV.api_version + '/zones/:zoneId', {}, {
                query: {
                    method: 'GET',
                    cache: false,
                    params: {zoneId: '@zoneId', date: $filter('date')(new Date(), "yyyy-MM-dd")},
                    isArray: true,
                    headers: {
                        "X-Auth-Token": $window.sessionStorage.token
                    }
                }
            }).success(function(data){
                deferred.resolve(data);
            }).error(function(){
                deferred.reject('There was an error')
            });
            return deferred.promise;
        };

2 个答案:

答案 0 :(得分:1)

您不需要自己的承诺来使用ng-resource:

var zones = function(){
return $resource(query : {...}).query();
}

答案 1 :(得分:0)

您可以定义资源并在实际资源上调用“.success()”而不是调用GET。这是你应该做的:

var res = $resource(ENV.web_api_url + ENV.api_version + '/zones/:zoneId', {}, {
            query: {
                method: 'GET',
                cache: false,
                params: {zoneId: '@zoneId', date: $filter('date')(new               Date(), "yyyy-MM-dd")},
                isArray: true,
                headers: {
                    "X-Auth-Token": $window.sessionStorage.token
                }
            }
        });
        res.get(null, function(data){
            deferred.resolve(data);
        },function(){
            deferred.reject('There was an error')
        });