如何使用requireJs缓存获取调用的结果?

时间:2012-05-21 18:10:06

标签: javascript backbone.js requirejs

我有几个视图,渲染结果取决于相同的集合,然后是其他模型或集合:

Examaples:

View1 -> model1, commonCollection
View2 -> collection2, commonCollection
View3 -> model3, commonCollection

现在,为了解决这个问题,我为每个视图制作了commonCollection.fetch ......在渲染页面之前,我等待每个模型/集合为每个视图做好准备 正如this answer中所述 但由于commonCollection的结果是相同的,我想缓存结果,以便将其用于其他视图。

如何在不使用全局变量的情况下缓存commonCollection的结果?我正在使用RequireJs

1 个答案:

答案 0 :(得分:2)

你不能只是覆盖公共集合中的fetch来进行缓存吗?

Backbone.Collection.extend({
   ...
   fetch: function(options) {
      if (alreadyUpdated) {
         // do nothing
      } else {
          return Backbone.Collection.prototype.fetch.apply(this, arguments);
      }
   }
   ...
});

这是一个更完整的例子的小提琴: http://jsfiddle.net/4A8Wu/2/