Backbone.js - 后退按钮后持久化数据

时间:2012-05-24 02:00:47

标签: backbone.js

我正在学习backbone.js,为现有的网络应用添加一些互动性。在初始页面加载时,我使用reset()方法suggested in the docs将一些初始数据引导到页面中。这非常有效。我也可以创建新的模型实例,视图就像我期望的那样处理它们;它们与初始数据一起出现,一切都很好。 (新数据也很好地击中了数据库。)

但是,如果我点击指向其他页面的链接(不使用骨干路径或任何东西,只是普通链接)然后点击浏览器的后退按钮,我之前创建的新模型就不见了;只显示旧的初始数据。我已经完成了一些调试,发现每次加载页面时都会运行reset()方法,所以大概就是我添加的附加数据。 (但是,如果我实际上刷新页面,新数据将再次显示,因为现在它也正在被引导。)

我知道我可以使用fetch()来获取新添加的数据(以及旧数据),但我试图避免这种情况,因为(a)每次页面都是额外的请求已加载,(b)因为文档说这不理想。

那么,我应该怎么做才能使用后退按钮不会让东西(暂时)消失?

1 个答案:

答案 0 :(得分:0)

页面加载模型,视图,集合和路由器。通过reset(引导)将页面设置为集合。用户单击链接以导航到另一个页面,单击后退按钮。现在发生了一些有趣的事情,

  • 路由器在加载页面之前匹配网址(单击后退按钮时)。在此匹配期间,您必须验证该集合是否包含新数据,然后执行collection.fetch()
  • 这将使您始终获得最新信息并且仅在服务器上点击一次(您的收集是空的或者它不包含新数据)