2013-04-30 121 views
0

我有兩種保存數據的方法(在一個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號的方式,因此,如果應用程序變爲更大它將帶給我不知道因此造成的任何問題。

回答

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); 
+0

通過觀察這兩種方式我也得到了conlusion在第二個它似乎在更新模型數據時正常工作,同時保存它,讓我們假設像一個實時編輯模式(同步)。 – Uuid 2013-05-01 16:35:59

+0

如果您需要更改模型的屬性而不同步,請使用'set'。然後稍後可以調用不帶參數的'save'將其同步到服務器。 – 2013-05-01 17:24:56