2015-02-06 36 views
0

我在我的服务中有一个方法如下。验证控制器中的返回值而不是在服务

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; 
      } 
     }); 

    } 
} 

虽然它的工作,我试图做出改变,以便在调用此方法的控制器,可以用成功和失败检查而不是在服务方法做这件事的。

我无法理解如何在此示例中使用promise。我期待像下面这样的提示。

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

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

回答

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; 
    } 
} 
相关问题