2015-02-06 33 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; 
    } 
} 
相關問題