过去几天我一直在玩backbone.js,编辑Todos示例并编写我自己的版本。
我现在正在考虑创建一个具有多个路由的控制器,但是在遵循Todos示例之后我发现的是调用Todos.fetch()
,导致项目被重新渲染。我认为它调用刷新事件?
backbone.js文档说:
请注意,不应使用fetch来填充页面加载时的集合 - 加载时所需的所有模型应该已经被引导到位。 fetch用于延迟加载不需要立即的接口的模型:例如,包含可以打开和关闭的笔记集合的文档。
然后加载数据的最佳方法是什么?我可以使用ajax调用来获取数据并在实例化主控制器时传递它吗?
如果我要更改页面并显示新视图怎么样?我可以调用fetch()
函数吗?
答案 0 :(得分:7)
这一点文档提醒您应该在初始页面加载时加载所有数据,并对所有后续加载使用fetch。
您可以使用以下代码:
MyCollection = new Collection({some json data});
比页面加载快得多,然后是一些加载数据的请求。
答案 1 :(得分:3)
我对文档的措辞感到有点困惑,但抓取是告诉你的集合或模型去服务器并通过以下方式获取数据的方法您自己的同步功能或 Backbone.sync 已经在内部使用ajax并可以将结果传递给您的成功或错误函数。
至于您提到的Todos示例,那就是集合是如何工作的。它会更新模型,然后触发“刷新”事件,这可能会强制您的视图被重新渲染,就像您说的那样。
我强烈建议您查看Backbone.js代码。由于这个原因,它非常有效地记录了事件和方法调用的流程。