2

我正在学习backbone.js 为现有的网络应用程序添加一些交互性。在初始页面加载时,我使用文档中建议reset()的方法将一些初始数据引导到页面中。这很好用。我还可以创建新的模型实例,视图会按照我的预期处理它们;它们与初始数据一起出现,一切都很好。(新数据也可以很好地访问数据库。)

但是,如果我点击一个指向不同页面的链接(不使用主干路由或其他任何东西,只是一个普通链接)然后点击浏览器的后退按钮,我之前创建的新模型就消失了;只显示旧的初始数据。我做了一些调试,发现reset()每次加载页面时都会运行该方法,所以大概这就是我添加的额外数据的原因。(但是,如果我真的刷新页面,新数据将再次显示,因为现在它也被引导了。)

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

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

4

1 回答 1

0

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

  • 路由器在页面加载之前匹配 url(单击后退按钮时)。在此匹配期间,您必须验证集合是否包含新数据,然后执行collection.fetch()
  • 这将使您始终获得最新信息并且只访问服务器一次(您的集合为空或不包含新数据)
于 2012-05-24T05:45:26.623 回答