Я использую фабрику для извлечения данных с использованием $http
и возможностей controllerAs
для ввода в мой вид. Без использования $scope
у меня возникают проблемы с возвратом данных ответа $http
в свойство моего контроллера.AngularJS: Возврат. Then() ответ на свойство контроллера
Моя фабрика
myApp.factory('Topics', function ($http, $q) {
var service = {},
_error = 'Oh no! Something went wrong. Please check back later.';
service.getTopics = function() {
var deferred = $q.defer();
$http.get(_url).success(function (resp) {
deferred.resolve(resp);
}).error (function() {
deferred.reject(_error);
});
return deferred.promise;
}
return service;
});
Мой контроллер
myApp.controller('TopicsCtrl', function (Topics) {
this.topics = (function() {
return Topics.getTopics().then(function (resp) {
console.log(resp);
return resp;
});
})();
}
Мой Посмотреть
<h1>{{ top.topics }}</h1>
Как я уже сказал, я использую controllerAs
на моем маршруте, который настроен на top
. console.log
в контроллере регистрирует то, что я ищу, но значение topics
пуст, когда оно вводится в представление. Оставив меня с {}.
P.S. Из того, что я понимаю $http
это абстракция $q
которая заставляет меня задаться вопросом, если используется $q
в этом примере не является необходимым.
Спасибо это сработало! –