2015-02-06 2 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; 
      } 
     }); 

    } 
} 

Хотя это работает, я пытаюсь внести изменения так, что в контроллере, который вызывает этот метод, можно использовать успешные и неудачные проверки вместо того, чтобы делать это в методе обслуживания.

Я не могу понять, как использовать обещания в этом примере. Я ожидаю чего-то вроде ниже.

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; 
    } 
} 
Смежные вопросы