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

时间:2013-06-26 20:48:53

标签: javascript backbone.js

我希望将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'
    }
]

基本上我想用本机对象/数组引导Backbone模型/集合,并对对应的Backbone对象进行任何更改。

  1. 有没有办法用本机Backbone做到这一点?
  2. 这个想法或Backbone是否有任何根本性的缺陷 因任何原因会破坏的功能?
  3. 是否有任何库已经存在?

1 个答案:

答案 0 :(得分: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);

请告诉我你的意思。