So what I'm wanting to do is have Backbone fetch all my collections when the router starts, and then keep all the collections and not have to re-fetch and reload all the collections while moving to different routes in the router. Does anyone know a way to do this?
问问题
714 次
2 回答
1
请注意,不应在页面加载时使用 fetch 来填充集合——加载时所需的所有模型都应该已经引导 到位。fetch 旨在为不需要立即需要的接口延迟加载模型:例如,具有可以切换打开和关闭的注释集合的文档。
这就是我在评论中的意思:
<script>
define("data", function() {
return <?php echo json here ?>;
});
</script>
然后你可以拥有var data = require("data");
并使用它来初始化 Backbone 模型/集合。我不确定这是正确的做法。
于 2012-11-09T16:27:21.697 回答
1
好吧,主干默认情况下会这样做。只需将代码添加到您的路由器以创建每个集合的实例并fetch()
在每个集合上调用一次。然后确保您的应用程序的其余部分只使用这些相同的集合实例并且fetch()
不再调用它们。真的就是这么简单。
但是,我假设您希望应用程序的其他部分能够调用fetch()
并在需要时静默使用缓存数据。这被认为是一个很难正确完成的问题,但一个天真的简单实现是简单地将isCached
标志存储为您的集合的属性并在您的覆盖fetch()
方法中检查它,如果您的集合数据已经加载,则无需执行任何操作就返回。
于 2012-11-09T15:42:53.990 回答