2011-03-31 106 views
15

过去几天我一直在使用backbone.js,编辑Todos示例并编写我自己的版本。初始backbone.js数据获取

我现在正在考虑创建一个具有多个路径的控制器,但是我发现在遵循Todos示例之后发现的是调用Todos.fetch(),导致项目重新呈现。我认为它调用刷新事件?

的Backbone.js的文件说:

注意获取不应该被用来填充在页面加载的集合 - 在加载时所需的所有车型应该已经自举到位。 fetch旨在为不需要立即需要的接口提供懒惰加载模型:例如,可以切换打开和关闭的注释集合的文档。

然后加载数据的最佳方法是什么?在实例化主控制器时,我可以使用ajax调用来获取数据并传递它吗? 如果我要更换页面并显示新视图,那么情况如何?我只需拨打fetch()函数?

回答

7

这一点的文档是为了提醒你,你应该加载初始页面加载的所有数据,并对所有后续加载使用fetch。

你可以有这样的代码:

MyCollection = new Collection({some json data}); 

比页面加载速度更快,然后一对夫妇的请求加载数据。

+0

谢谢,我认为这将在控制器初始化? – Webster 2011-04-01 02:11:38

+0

在初始页面的脚本标记中。 – Julien 2011-04-01 02:26:15

+0

你会把数据传给控制器吗?将它放在控制器的init中是否更有意义? – Webster 2011-04-01 11:35:47

3

我是个有点困惑的文档的措辞为好,但取是要告诉你的收藏模式去服务器,并通过无论是你自己的同步功能或骨干获取数据的方式。同步已经在内部使用ajax,并可以将结果传递给您的成功或错误功能。

至于你提到的托多斯的例子,那是如何收集是为了工作。它会更新模型,然后触发“刷新”事件,这可能会迫使您的视图被重新渲染,就像您所说的那样。

我强烈建议您查看Backbone.js代码。它的记录非常有效,事件和方法调用的流程很容易掌握。

+1

我认为在查看其他代码以及Juliens之后,需要在我的初始控制器中执行我自己的AJAX调用。 – Webster 2011-04-01 02:10:35

+2

这就是你最终在做什么......所以你会遇到更好的事情......我想骨干会指定一些方法来做到这一点,即使它只是一个Ajax调用......我现在处于相同的情况 – 2011-08-16 01:25:44