0

我有两种保存数据的方法(到一个休息 API),两种方法都可以,但我想知道哪一种是要走的路。

第一种方式:

// 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);

到目前为止,我使用的是第一种方式,所以我不知道应用程序是否变大会因此带来任何问题。

4

2 回答 2

3

如果我是你,我会使用Backbone.StickIt将现有模型与表单同步,或者使用Backbone.Syphon执行类似于您在上面所做的事情。

于 2013-04-30T23:03:40.917 回答
3

我会走这条路。您不必将所有属性传递给模型的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);
于 2013-05-01T07:38:24.370 回答