我希望将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对象进行任何更改。
答案 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);
。
请告诉我你的意思。