2013-01-23 79 views
3

我在用戶設置配置文件表單中使用Backbone。我獲取模型並將其信息呈現在表單中。當我保存型號全部時,發送參數而不是用戶更改的參數。避免`fetch()`將模型屬性標記爲已更改

首先我獲取模式,並使其在視圖:

// Fetch model and render on view 
user = new User({ id: 123 }); 
user.fetch().done(function() { 
    view.render(); 
}); 

當用戶改變一個字段我更新與「設置()」方法的模型:

"change .email": function() { 
    this.model.set("email", this.email.val()); 
} 

後來在視圖中的代碼,我節省click事件(使用patch: true):

"click .save": function() { 
    console.log(this.model.changedAttributes()); // Shows all the model attributes 
    this.model.save({ patch: true }); // Sends all the model attributes 
} 

如何避免骨幹馬吉ng在fetch後用於初始化模型?

+0

能否請你告訴你如何更新你的模型? –

+0

@VitaliyPetrychuk我不這是相關的,但我反正包括它。 – eliocs

回答

1

這個技巧可以解決你的問題:

model.fetch({context:model}).done(function() { 
    this.set({}); 
    view.render(); 
}); 
+0

這個工程,你能解釋爲什麼嗎? – eliocs

+0

@eliocs因爲這裏https://github.com/documentcloud/backbone/blob/master/backbone.js#L322'changed'屬性設置爲'{}'。因爲'attrs === {}'我們跳過這個循環https://github.com/documentcloud/backbone/blob/master/backbone.js#L331 –

相關問題