将骨干模型和集合绑定到源图

Tying Backbone Model and Collection to source graphs

本文关键字:绑定 集合 模型      更新时间:2023-09-26

我希望将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. 有没有已经存在的库可以做到这一点

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

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

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-更改

听起来,一个简单的事件系统会给你所需的所有杠杆,让你在没有骨干的情况下很好地完成这项工作。

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

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

如果这就是你想要的,请告诉我。