Я создаю приложение Ionic, которое вытягивает статьи с сайта joomla K2. Я использую $ http и просто заканчиваю свой url '' format = json ', и это работает отлично. Однако на веб-сайте я вытаскиваю данные из обновлений своих статей каждые несколько минут, поэтому мне нужно, чтобы пользователь мог обновить страницу. Я реализовал Ionics pull, чтобы обновить, и это работает набухание, за исключением того, что вместо того, чтобы просто втягивать новые статьи, он просто добавляет все статьи в мой массив. Есть ли вообще что-то, возможно, перебирать текущие временные метки или идентификаторы статей (я кэширую статьи в localStorage), чтобы просто принести новые статьи? Моя фабрика выглядит следующим образом:Потяните, чтобы обновить дублирование данных
.factory('Articles', function ($http) {
var articles = [];
storageKey = "articles";
function _getCache() {
var cache = localStorage.getItem(storageKey);
if (cache)
articles = angular.fromJson(cache);
}
return {
all: function() {
return $http.get("http://jsonp.afeld.me/?url=http://mexamplesite.com/index.php?format=json").then(function (response) {
articles = response.data.items;
console.log(response.data.items);
return articles;
});
},
getNew: function() {
return $http.get("http://jsonp.afeld.me/?url=http://mexamplesite.com/index.php?format=json").then(function (response) {
articles = response.data.items;
return articles;
});
},
get: function (articleId) {
if (!articles.length)
_getCache();
for (var i = 0; i < articles.length; i++) {
if (parseInt(articles[i].id) === parseInt(articleId)) {
return articles[i];
}
}
return null;
}
}
});
и мой контроллер:
.controller('GautengCtrl', function ($scope, $stateParams, $timeout, Articles) {
$scope.articles = [];
Articles.all().then(function(data){
$scope.articles = data;
window.localStorage.setItem("articles", JSON.stringify(data));
},
function(err) {
if(window.localStorage.getItem("articles") !== undefined) {
$scope.articles = JSON.parse(window.localStorage.getItem("articles"));
}
}
);
$scope.doRefresh = function() {
Articles.getNew().then(function(articles){
$scope.articles = articles.concat($scope.articles);
$scope.$broadcast('scroll.refreshComplete');
});
};
})
Лучше всего было бы использовать параметры запроса, чтобы извлекать только те статьи, которые у вас еще нет с сервера. – devqon
Проблема в том, что я не могу найти документацию о функциональности Joomla K2 JSON. Он предоставляет опцию ограничения, но, похоже, она не работает с такой функциональностью. – letterman549