1
我一直試圖在emberjs中實現延遲加載,請按照以下答案:https://stackoverflow.com/a/11925918/341358。但是當ember加載初始數據集時,我卡住了。出於某種原因,第一次ajax呼叫保持呼叫:/newsitems
而不是隻有第一頁:/newsitems?page=1
。從那時起,loadmore功能起作用,返回第2,3,4頁的有限數據集...在emberjs中延遲加載的問題
所以我的問題是:如何確保只有第一頁的項目是加載,而不是所有的人一次?
這裏是我的路由是怎麼樣子:
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);
}
}
});
很棒的建議,但我已經嘗試過此之前。這確保了對後端的第一次調用是:'/ newsitems?page = 1',但是調用下一頁不會更新視圖。我可以看到對後端的調用如下所示:'/ newsitems?page = 2',但視圖不斷顯示前幾項。任何想法可能會導致這種情況? – polyclick 2013-03-07 10:50:02
這似乎是多餘的,因爲您已經從控制器內部啓動了一個'findQuery',但是當您從控制器中獲取頁碼時發生了什麼? – Ben 2013-03-07 16:11:25
與之前一樣:第一次調用/ newsitems?page = 1,第二次調用:/ newsitems?page = 2。太棒了!但是,我的觀點沒有更新,所以新的記錄永遠不會顯示在頁面上。 – polyclick 2013-03-07 17:12:08