我有两种保存数据的方法(进入休息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);
到目前为止,我正在使用第一种方式,所以我不知道应用程序是否会变大,因此会带来任何问题。
答案 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);