Ajax 离子无限卷轴与滴分页数据?
我和爱奥尼亚混在一起,我用运球数据只是为了玩游戏。我不知道如何回答。我可以查询运球来显示前15个帖子以外的帖子,api在这里,如果我想获得更多,我可以请求第2页,如 B.如何在不与旧项目冲突的情况下将项目传递到模板中Ajax 离子无限卷轴与滴分页数据?,ajax,angularjs,api,Ajax,Angularjs,Api,我和爱奥尼亚混在一起,我用运球数据只是为了玩游戏。我不知道如何回答。我可以查询运球来显示前15个帖子以外的帖子,api在这里,如果我想获得更多,我可以请求第2页,如 B.如何在不与旧项目冲突的情况下将项目传递到模板中 /** * Dashboard Controller. (must be authenticated) * */ .controller('DashController', function($scope, $state, DribbbleData, $http) {
/**
* Dashboard Controller. (must be authenticated)
*
*/
.controller('DashController', function($scope, $state, DribbbleData, $http) {
$scope.items = [];
$scope.initialize = function() {
DribbbleData.getData().then(function(res) {
console.log(res);
$scope.items = res.data.shots;
}, function(status) {
console.log('error')
})
}
$scope.loadMore = function() {
$http.jsonp('http://api.dribbble.com/shots/everyone?callback=JSON_CALLBACK').success(function(items) {
console.log(items);
var test = $scope.items;
console.log(test)
//$scope.items = items;
//useItems(items);
$scope.$broadcast('scroll.infiniteScrollComplete');
});
};
$scope.$on('$stateChangeSuccess', function() {
$scope.loadMore();
});
$scope.initialize();
})
景色
<ion-view view-title="Dashboard">
<ion-content class="padding">
<ion-list>
<div class="list card" data-ng-repeat="item in items">
<div class="item item-title">
<h2>{{item.title}}</h2>
</div>
<div class="item item-body">
<img class="full-image" ng-src="{{item.image_url}}">
<p>
<a href="#" class="subdued">{{item.likes_count}} Like</a>
<a href="#" class="subdued">{{item.comments_count}} Comments</a>
</p>
</div>
<div class="item tabs tabs-secondary tabs-icon-left">
<a class="tab-item" href="#">
<i class="icon ion-thumbsup"></i>
Like
</a>
<a class="tab-item" href="#">
<i class="icon ion-chatbox"></i>
Comment
</a>
<a class="tab-item" href="#">
<i class="icon ion-share"></i>
Share
</a>
</div>
</div>
</ion-list>
<ion-infinite-scroll on-infinite="loadMore()" distance="1%">
</ion-infinite-scroll>
</ion-content>
</ion-view>
{{item.title}
当ajax完成时,您需要将新项目添加到$scope.items
数组中
$scope.loadMore = function() {
$http.jsonp('http://api.dribbble.com/shots/everyone?callback=JSON_CALLBACK').success(function(items) {
// Add all the new items
items.forEach(function(newItem) {
$scope.items.push(newItem);
});
$scope.$broadcast('scroll.infiniteScrollComplete');
});
};
如果您确定没有重复项,只需查看以下项目:
$scope.items = $scope.items.concat(items);
如果您没有,最好的办法是跟踪列表中当前的项目,并仅在该项目尚不存在时添加:
var itemIds = {};
function addItems(items) {
items.forEach(function (item) {
if (itemsIds[item.id]) {
return;
}
$scope.items.push(item);
itemIds[item.id] = true;
}
}
要处理分页,只需在成功回调中增加一个计数器。例如:
var nextPage = 2;
$scope.loadMore = function() {
$http.jsonp('http://api.dribbble.com/shots/everyone?callback=JSON_CALLBACK&page=' + nextPage).success(function(items) {
nextPage++;
addItems(items);
$scope.$broadcast('scroll.infiniteScrollComplete');
});
};
你想在列表底部添加新项目,对吗?是的,但主要问题是请求检索第2页,然后检索第3页。对不起,我不确定我是否完全理解你。您的意思是您在生成正确的URL时遇到了问题?不,很抱歉让您感到困惑,但是dribble api只返回15项。要获得下一个15页,您必须请求第2页、第3页或第4页。因此,在无限滚动中,我必须检测请求量的值,例如,第一个无限请求执行一个请求,然后在第二个迭代请求中,我更新了我的答案。这能回答你的问题吗?我怎样才能用离子3的方式来回答?