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

时间:2013-04-30 22:55:31

标签: javascript jquery backbone.js marionette

我有两种保存数据的方法(进入休息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);

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

2 个答案:

答案 0 :(得分:3)

如果我是你,我会使用Backbone.StickIt将现有模型与表单同步,或使用Backbone.Syphon执行类似于上述操作的内容。

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