3

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

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

有没有办法做到这一点,而无需在服务器或本地存储中持久化数据,即。收藏只存在于记忆中吗?

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

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

4

1 回答 1

2

一开始很容易,只是不要fetch()用来填充 Collectionreset()而是使用。检查reset() 文档

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

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

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

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

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

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

于 2012-08-04T14:47:10.117 回答