ruby-on-rails - Backbone .js分页

标签 ruby-on-rails pagination 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);

现在我的项目变量包含前 10 条记录,我有人检索另一轮 10 条记录,例如,我将这些新到达的 10 条记录保存在变量中
var projects_data_new = ...

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

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

最佳答案

在 Backbone 0.5 及更高版本中,当您调用 fetch() ,可以指定您希望添加而不是替换客户端上存在的数据集:fetch({add: true}) .这会将新对象附加到现有的 projects收藏。您仍然必须最终处理分页演示问题。

该集合也仅在运行完 Backbone.Collection.parse() 之后才获取要添加/获取的 JSON 对象。 ,您可以覆盖它以执行诸如“与项目一起,给我服务器上所有对象的计数,并仅将项目返回到添加/获取”之类的操作。然后,您可以使用此元数据正确显示用户可以翻阅多少页。如果你想真正聪明,你可以将集合用作稀疏数组(我的经验是这对于标准台式机或笔记本电脑上少于 10,000 个项目的集合很好,但不是平板电脑),并让用户翻转任意浏览页面,根据需要获取填充物。

关于ruby-on-rails - Backbone .js分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6910088/

相关文章:

php - 我的数据库中有超过 100 万条记录。如何更快地分页......?

pagination - 如何在 ngx-bootstrap 分页中将值设置为(通过 TS 的当前页面)分页?

javascript - 带 subview 的主干路由

javascript - 将 require.js 与独特的 CDN 结合使用

ruby-on-rails - Prawn table 列中的从下到上的文本

ruby-on-rails - 以参数为前缀的 Rails 3 资源路由

css - 使用 Rails 安装 Bootstrap

ruby-on-rails - Rails 使用参数创建对象 - 不需要

java - REST 网络应用程序中的分页

javascript - 在服务器上而不是在客户端对主干分页器结果进行排序