javascript - 如何让 Backbone.js 集合只存在于内存中(不持久化)?

标签 javascript collections backbone.js

使用 Backbone.js,我使用 Collections 在客户端和 Ruby 服务器之间获取和同步数据。效果很好。

现在我还想用它在内存中存储数据(在目前的情况下,它将是购物车中的文章集合)。

有没有一种方法可以在不将数据保存在服务器或本地存储中的情况下执行此操作,即。收藏只存在于内存中吗?

每当我尝试将集合的 url 属性设置为 null 值时,我都会收到 Uncaught TypeError: Cannot call method 'create' of null。所以...我想这不是正确的方法!

如果这不可能,让 server 和 localStorage 在同一应用程序中处理不同类的最佳设计是什么?

最佳答案

一开始很简单,只是不要使用 fetch() 来填充集合,而是使用 reset()。检查reset() documentation .

但也许您开始遇到 Collection.create()Model.destroy() 等方面的问题。所以你必须小心使用这个方法..也许你可以使用 Collection.add() 而不是 Collection.create(),但我没有看到好的替代品对于 Model.destroy()

我认为解决你的问题最优雅的方法应该是为你的内存Collection和Model重写sync()方法。

这是一个非常猜测,写在美好的空气中:

// code simplified and no tested
var MemoryCollection = Backbone.Collection.extend({
  sync: function( method, model, options ){
    options.success.apply();
  }
})

但也许它可以帮助您开始朝这个方向努力。

如果这有效,您仍然必须使用 Collection.reset() 而不是 Collection.fetch()

关于javascript - 如何让 Backbone.js 集合只存在于内存中(不持久化)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11809263/

相关文章:

c# - 用于快速插入/删除的 .net 集合

.net - List、IList、IEnumerable、IQueryable、ICollection,哪个返回类型最灵活?

java - 在 `Collection <MyObject>` 内部和外部 `MyObject` 类之间进行选择 [Java]

javascript - 获取后将新模型添加到集合中(不带比较器)

jquery - 在渲染 backbone.js 时更改表格的背景颜色

javascript - Jquery 选择器选择一个 div 下的 h4 标签

javascript - 添加 live 到 jquery 功能

backbone.js - 是否可以离线同步工作

javascript - 为什么应用 JSON.stringify 会占用这么多内存?

javascript - 旧版本 Internet Explorer 中的 sessionStorage