0

我希望将 Backbone 与 Node 上的持久内存数据存储结合使用。我希望能够使用 Backbone 访问该商店并反映更改。

数据可能如下所示:

var data =
[
    {
        baz: 'baz'
    }
]

然后我想要做的是这样的:

var dataCollection = new Backbone.Collection(data);
dataCollection.first().set('baz', 'new value');

data[0].baz //==> 'new value'

现在更有趣的是,如果我这样做:

dataCollection.add({ baz: 'a whole new baz' });

data //==>

[
    {
        baz: 'baz'
    },
    {
        baz: 'a whole new baz'
    }
]

基本上我想用原生对象/数组引导一个主干模型/集合,并对主干对象进行任何更改,反映在对应对象上。

  1. 有没有办法用原生 Backbone 做到这一点?
  2. 这个想法或 Backbone 功能是否有任何根本性的缺陷会因任何原因而中断?
  3. 是否有任何已经存在的库可以做到这一点?
4

1 回答 1

0

我不确定主干是否会在节点上运行。我没有这方面的经验。

至于使用数据存储实际反映主干模型/集合的更改,您可以只监听模型/集合更改事件(假设它甚至会运行)。

this.listenTo(this.model,'change',this.updateDataStore);

updateDataStore: function(model) {
   //access model.changed to reflect just the changed attributes to your datastore
}

http://backbonejs.org/#Model-changed

听起来一个简单的事件系统将为您提供在没有骨干的情况下很好地完成此操作所需的所有杠杆。

如果您希望 model.save 将更改持久保存到您的内存数据存储中,您可以覆盖Backbone.sync以不发送 XHR,而只是更改您的数据存储。这里的巧妙之处在于,如果您为所有不同的 http 操作实现它,您也应该能够获取。

现在你需要的只是模型上的一个事件,让它change自己监视,然后调用 this.save: this.listenTo(this,'change',this.save);

让我知道这是否是你所追求的。

于 2013-06-27T06:59:04.847 回答