backbone.js分页

Nik*_* So 18 pagination ruby-on-rails backbone.js

我开始使用Backbone并尝试将我的Rails后端的html模板转换为javascript模板.

我认为使用骨干的一件事是更有利的是它的模型和集合的概念.所以说,我有100条记录,并将这些记录分页到每页10条,通常,没有相当多的javascript工作,人们很难期望缓存,ajax,单页分页体验.意思是,我登陆第一页,现在点击第二页,第二页请求下一个10条记录ajax'ly,如果我再单击第一页,我将不再向服务器发出任何请求,因为它在那里.

我没有写过任何代码,但有人能告诉我如何将ajax请求的新到达的数据附加到现有的分页中进行分页吗?

例如,记住Backbone的文档说你的第一次页面加载应该包含自举数据而不是第二次获取它们.所以

var projects_data = <%= @projects.to_json.html_safe %>;
var projects = new Cafe.Collections.ProjectsCollection();
var projects.reset(projects_data);
Run Code Online (Sandbox Code Playgroud)

现在我的项目变量包含,例如,前10个记录,我有人后退另一轮10,比方说,我将这些新到的10保存在变量中

var projects_data_new = ...
Run Code Online (Sandbox Code Playgroud)

我可以将它们附加到现有的"项目"集合中吗?

或者这不是在分页的情况下在Backbone中鼓励的设计模式吗?

Elf*_*erg 20

在主干0.5及以上,当您调用时fetch(),可以指定您希望添加而不是替换客户端上存在的数据集:fetch({add: true}).这会将新对象附加到现有projects集合.您仍然需要处理分页演示问题.

该集合还只获取JSON对象在运行后添加/获取Backbone.Collection.parse(),您可以覆盖它们以执行诸如"与项目一起,给我计算服务器上所有对象,并仅返回项目到添加/获取." 然后,您可以使用此元数据正确显示用户可以翻页的页数.如果你想变得非常聪明,你可以将该集合用作稀疏数组(我的经验是,对于标准台式机或笔记本电脑上不到10,000件物品的集合,但不适用于平板电脑),并让用户翻转通过页面任意,根据需要获取填充.


Bla*_*ine 10

希望你现在已经解决了这个问题:)正如Elf Sternberg所指出的那样,神奇的是定义你的Collection的解析(),下面的链接进一步说明了这一点:

首先打破了与backbone.js的分页

例如如何编写解析:

//假设我们发送的对象如{page:1,per_page:3,total:233,models:{...}}

parse: function(resp) {
    this.page = resp.page;
    this.perPage = resp.per_page;
    this.total = resp.total;
    return resp.models;
  }
Run Code Online (Sandbox Code Playgroud)

一旦你在你的收藏中有这些细节,你只需要相应地定制你的观点,我相信你不会那么难,因为你已经很远了:)

  • 有人赞成这个答案,所以我重新阅读你的评论,我有时会这样做:P (2认同)