Я хотел бы загрузить внешний контент JSON в область моих контроллеров. Инициировать мою область для первых десяти пунктов не проблема. Однако я хочу динамически расширить область с помощью новых элементов (путем прокрутки)
По какой-то причине пейджинг не работает в моей службе, когда я пытаюсь запустить функцию loadNews (counter). Однако, когда я регистрирую результаты ответа http-get в службе, отображаются правильные данные.
Когда я расширяю области новостей, он расширяется, но только с первыми страницами.
Вот мой маленький код.
app.service('newsService', function ($http, $q) {
var deferred = $q.defer();
var deferred2 = $q.defer();
this.loadNews = function (counter) {
if (counter == undefined) {
$http.get('http://domain.com/wp- json/wp/v2/posts').then(function (response) {
deferred.resolve(response);
});
return deferred.promise;
} else {
console.log(counter); // This returns a correct counter
$http.get('http://domain.com/wp-json/wp/v2/posts?page=' + counter).then(function (response) {
deferred2.resolve(response);
});
return deferred2.promise;
}
}
});
app.controller('homeNewsCtrl', function ($scope, $http, $timeout, $cordovaSplashscreen, newsService) {
$scope.count = 1;
var promise = newsService.loadNews();
promise.then(function (response) {
$scope.newsItems = response.data;
});
$scope.loadMore = function (counter) {
$scope.count += counter;
var promise = newsService.loadNews($scope.count);
promise.then(function (response) {
$scope.newsItems.push.apply($scope.newsItems, response.data);
});
};
});
В конце концов я придумал заводское решение. Это сработало для меня.
app.factory('newsItems', function ($http) {
return {
getNews: function (counter) {
if (counter != undefined) {
return $http({
url: 'http://www.domain.com/wp-json/wp/v2/posts?page=' + counter,
method: 'GET'
})
} else {
return $http({
url: 'http://www.domain.com/wp-json/wp/v2/posts',
method: 'GET'
})
}
}
}
});
$scope.loadMoreNews = function (counter) {
$scope.count += counter;
newsItems.getNews($scope.count).then(function (response) {
$scope.newsItems.push.apply($scope.newsItems, response.data);
});
};