骨干,将数据保存到模型中的正确方法?
问题描述:
我有两种保存数据的方法(在一个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);
答
如果我是你,我会使用Backbone.StickIt同步现有的模型与表格或使用Backbone.Syphon做类似的事情你在做什么。
+0
+1 Backbone.Syphon – 2014-01-24 04:55:11
通过观察这两种方式我也得到了conlusion在第二个它似乎在更新模型数据时正常工作,同时保存它,让我们假设像一个实时编辑模式(同步)。 – Uuid 2013-05-01 16:35:59
如果您需要更改模型的属性而不同步,请使用'set'。然后稍后可以调用不带参数的'save'将其同步到服务器。 – 2013-05-01 17:24:56