骨干,将数据保存到模型中的正确方法?

问题描述:

我有两种保存数据的方法(在一个rest API中),它在两种方式下都可以正常工作,但我想知道哪一种方法可行。骨干,将数据保存到模型中的正确方法?

1路:

// here serializeObject just converts form inputs into a serialized object 
var inputs_data = this.ui.form.serializeObject(); 
// here in 3rd param from extend is the same as this.model.unset('logged'); 
var data = _.extend(this.model.toJSON(), inputs_data ,{logged: undefined}); 
// here I save and the data goes Ok! 
this.model.save(data); 

第二个办法:

// here i serialize the object the same as above 
var inputs_data = this.ui.form.serializeObject(); 
// here i exclude 3rd parameter 
var data = _.extend(this.model.toJSON(), inputs_data); 
// set data with model.set instead of model.save 
this.model.set(data); 
// remove unwanted attributes 
this.model.unset('logged',{silent:true}); 
// finnaly just save 
this.model.save(data); 

到目前为止,我现在用的是1号的方式,因此,如果应用程序变为更大它将带给我不知道因此造成的任何问题。

我会走这条路。你不必通过所有属性模型save方法,只有需要的属性改变(http://backbonejs.org/#Model-save

var inputs_data = this.ui.form.serializeObject(); 
// remove unwanted attributes 
delete inputs_data.logged; 
// finally just save 
this.model.save(inputs_data); 
+0

通过观察这两种方式我也得到了conlusion在第二个它似乎在更新模型数据时正常工作,同时保存它,让我们假设像一个实时编辑模式(同步)。 – Uuid 2013-05-01 16:35:59

+0

如果您需要更改模型的属性而不同步,请使用'set'。然后稍后可以调用不带参数的'save'将其同步到服务器。 – 2013-05-01 17:24:56

如果我是你,我会使用Backbone.StickIt同步现有的模型与表格或使用Backbone.Syphon做类似的事情你在做什么。

+0

+1 Backbone.Syphon – 2014-01-24 04:55:11