2013-04-15 2 views
1

У меня есть следующий код, и он возвращает обещание, которое является тем, что мне нужно для этого вызова. Теперь я хочу, чтобы мой призыв к $ resource возвратил обещание, но я не могу заставить его делать то, что мне нужно.Есть ли способ, которым я могу сделать вызов ресурса, вернуть обещание с помощью AngularJS?

get: function (applicationId) { 
    return $http({ 
     method: 'GET', 
     url: '/api/TestAccounts/GetSelect', 
     params: { applicationId: applicationId } 
    }); 
} 

Мой ресурс кодируется следующим образом:

var Test = $resource('/api/Tests', {}, { 
    saveData: { method: 'PUT' }, 
    deleteData: { method: "DELETE", params: { testId: 0 } } 
}); 

Когда я запускаю следующий и он правильно возвращает данные в переменную соотв. Однако это не то, что я хочу.

query: function (selectedSubject) { 
    Test.query({ subjectId: selectedSubject }, 
     function (resp) { 
      var aa = resp; 
     } 
    ); 
} 

Q: Я хотел бы вернуться обещание. Есть ли способ, который я могу сделать $ resource вместо обещания, как вызов $ http? То, что я ищу это обещание, так что я могу выполнить следующий вызывающий код:

testService.query($scope.selectedSubject) 
    .then(function (result) { 
     var a = result.data; 
    }, function (result) { 
     alert("Error: No data returned"); 
}); 

ответ

0

Просто использовать $ Q обслуживание и изменить код, как показано ниже, и вернуть обещание

query: function (selectedSubject) { 

     var deferred = $q.defer(); 
     Test.query({ subjectId: selectedSubject }, 
      function (resp) { 
       deferred.resolve(resp); 
      } 
     ); 
    return deferred.promise; 
    } 
Смежные вопросы