我一直在尝试按照以下答案在emberjs中实现延迟加载:https://stackoverflow.com/a/11925918/341358。但是当ember加载初始数据集时我就陷入了困境。由于某种原因,第一个ajax调用不断调用:/newsitems
而不是仅调用第一页:/newsitems?page=1
。从那时起,loadmore功能运行良好,为我返回第2,3,4页的有限数据集......
所以我的问题是:如何确保只加载第一页的项目,而不是一次加载所有项目?
以下是我的路线的样子:
App.NewsitemsRoute = Ember.Route.extend({
model: function() {
return App.Newsitem.find();
}
});
这是我的控制器:
App.NewsitemsController = Ember.ArrayController.extend({
currentPage: 1,
canLoadMore: function() {
return this.get('currentPage') < 10;
}.property('currentPage'),
loadMore: function() {
if (this.get('canLoadMore')) {
this.set('isLoading', true);
var page = this.incrementProperty('currentPage');
this.get('store').findQuery(App.Newsitem, {page:page});
}
else
{
this.set('isLoading', false);
}
}
});
答案 0 :(得分:1)
您是否可以更改路线以包含默认页码1
?
e.g。
App.NewsitemsRoute = Ember.Route.extend({
model: function() {
var controller = this.controllerFor('Newsitems');
return App.Newsitem.find({page: controller.get('currentPage')});
}
});
编辑:如果从控制器获取页码怎么办?