2012-03-20 42 views
8

我正在尋找一種解決方案來處理使用backbone.js的模型之間的狀態問題。使用backbone.js在保存請求中發送額外的非模型數據?

我有一個時間跟蹤應用程序,用戶可以開始/停止作業,它會記錄作業的工作時間。我有一個工作模式,可以保存工作數據,以及它是否正在「開啓」。

一次只能完成1項工作。因此,如果用戶啓動一項作業,則當前正在運行的作業必須停止。我想知道做到這一點的最佳解決方案是什麼。我的意思是我可以簡單地切換每個作業的'on'參數,然後在每個參數上調用save,但是這會向服務器發送2個請求,每個請求都有每個作業的完整表示。

理想情況下,如果我可以在保存請求中捎帶附加數據,這與如何在獲取請求中發送額外數據相似,那將是非常好的。我只需要發送當前正在運行的作業的ID,因爲這與模型無關,所以需要將一起發送,而不是其中的一部分。

有沒有很好的方法來做到這一點?我想我可以找到一種方法來保持對當前作業服務器端的引用(如果需要的話):\

回答

8

當您調用保存功能時,第一個參數是要保存的數據的對象。不要僅僅調用model.save(),而要創建一個包含模型數據和額外內容的對象。

你的方法將觸發關閉保存的內部:

... 
var data = this.model.toJSON(); 
data.extras = { myParam : someData }; 

this.model.save(data, {success: function(model, response) { 
    console.log('hooray it saved: ', model, response); 
}); 
... 
+2

它指出,雖然這確實發送額外的非模型數據,便會集模型上的數據,然後成爲重要的模型數據。就像我的情況一樣,您可能不需要這個,只是想在請求中發送1或2個額外的參數,而不是用於模型。您需要'this.model.unset('foo',{silent:true})'然後刪除額外的屬性 – 2013-12-30 11:29:05

+0

@ryanmarc但是這樣做發送附加數據的工作,但這不是一個好的方法發送數據與模型。 – 2014-10-27 15:27:58

+2

@RobinsGupta而不是評論2年以上的答案是不正確的,爲什麼不添加更新的答案是?骨幹在2012年的狀況與今天截然不同。 – ryanmarc 2014-11-21 19:05:58

相關問題