【发布时间】:2012-11-09 15:09:16
【问题描述】:
所以我想做的是让 Backbone 在路由器启动时获取我所有的集合,然后保留所有集合,而不必在移动到路由器中的不同路由时重新获取和重新加载所有集合。有谁知道这样做的方法吗?
【问题讨论】:
标签: backbone.js backbone.js-collections
所以我想做的是让 Backbone 在路由器启动时获取我所有的集合,然后保留所有集合,而不必在移动到路由器中的不同路由时重新获取和重新加载所有集合。有谁知道这样做的方法吗?
【问题讨论】:
标签: backbone.js backbone.js-collections
请注意,不应使用 fetch 来填充页面上的集合 加载——加载时需要的所有模型都应该是bootstrapped 到位。 fetch 用于延迟加载模型 不需要立即使用的接口:例如,文档 带有可以打开和关闭的笔记集合。
这就是我在评论中的意思:
<script>
define("data", function() {
return <?php echo json here ?>;
});
</script>
然后您可以拥有var data = require("data"); 并使用它来初始化 Backbone 模型/集合。我不确定这是不是正确的做法。
【讨论】:
嗯,骨干默认情况下会这样做。只需将代码添加到您的路由器以创建每个集合的实例并在每个集合上调用一次fetch()。然后确保您的应用程序的其余部分只使用这些相同的集合实例,并且不再对它们调用fetch()。就是这么简单。
但是,我认为您希望应用程序的其他部分能够调用 fetch() 并在需要时静默使用缓存数据。这被认为是一个很难正确解决的问题,但一个天真的简单实现是简单地将 isCached 标志存储为您的集合的属性,并在您覆盖的 fetch() 方法中检查它,如果您的集合数据已加载。
【讨论】: