验证控制器中的返回值而不是在服务中

时间:2015-02-06 09:24:20

标签: angularjs

我的服务方法如下所示。

module.service('Service', function($state, $rootScope) {

    var getRemoteItems = function(page, displayLimit) {
         var defferer = $q.defer()

        var query = new Parse.Query("Item");
        query.limit(displayLimit);
        query.skip(page * displayLimit);
        query.descending("createdAt");

        var items = [];

        query.find({
            success: function(results) {
                //process results
                return results;
            },
            error: function(e) {
                return null;
            }
        });

    }
}

虽然它正在运行,但我正在尝试进行更改,以便在调用此方法的控制器中,可以使用成功和失败检查,而不是在服务方法中执行此操作。

在这个例子中,我无法理解如何使用promises。我期待下面的事情。

Service.getRemotItems(1,10).then()...error()..

请原谅我在示例中的任何语法问题,因为我是Angular的新手。

1 个答案:

答案 0 :(得分:0)

您已经使用$q.defer()创建了承诺,您只需在成功和解决方案中解决/拒绝承诺错误回调

module.service('Service', function($state, $rootScope, $q) {

    var getRemoteItems = function(page, displayLimit) {
        var deferred = $q.defer();

        var query = new Parse.Query("Item");
        query.limit(displayLimit);
        query.skip(page * displayLimit);
        query.descending("createdAt");

        var items = [];

        query.find({
            success: function(results) {
                deferred.resolve(results);
            },
            error: function(e) {
                deferred.reject(e);
            }
        });

        return deferred.promise;
    }
}