在emberjs中延迟加载的麻烦

时间:2013-03-06 14:26:12

标签: ember.js

我一直在尝试按照以下答案在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);
    }
  }
});

1 个答案:

答案 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')});
  }
});

编辑:如果从控制器获取页码怎么办?