2014-01-22 2 views
0

Если у меня есть завод, где я хочу, чтобы вернуть все задачи:Повторные результаты angularjs ресурса

App.factory('Task', function(TaskResource) { 
    return { 
    all: function() { 
     TaskResource.query().then(function(results) { 
     return results; 
     } 
    } 
    }; 
}); 

и я стараюсь, чтобы использовать его в «TasksController»:

App.controller('TasksController', function('Task') { 
    $scope.tasks = Task.all(); 
}); 

Я получаю результат «неопределенного». Если я зарегистрирую результаты на самом заводе, они вернутся правильно. Может кто-нибудь помочь мне понять, почему это происходит? Благодарю.

ответ

1

TaskResource.query() является обещанием. .then на обещании возвращается через некоторое время. Это означает, что функция all немедленно возвращается, возвращая undefined. Обещание завершается через некоторое время и возвращает результат, который никто не получает! Вот почему вы видите undefined, возвращенный с all функции.

+0

Благодарим вас за разъяснение. Вы знаете, как я могу изменить это, чтобы он вернул результат обещания? – sturoid

+0

Поскольку ваше возвращаемое значение зависит от обещания, вы должны вернуть обещание в результате функции 'all'. Вы можете вернуть 'TaskResource.query()' обещание или вернуть новое обещание и решить его, когда 'TaskResource.query()' разрешает. – RaviH

Смежные вопросы