我有一個Backbone應用程序,我在其中創建一個新模型並保存它。下面的代碼的片段,與調試,在CoffeeScript中:Backbone.js發出`model.save()`調用的GET請求
newListing = new Listing
console.log "New?", newListing.isNew()
newListing.save creation, {
wait: true
success: (model, response) =>
console.log "SAVED", model
console.log "RESPONSE", response
}
對於調試,我也重寫Backbone.sync
:
oldSync = Backbone.sync
Backbone.sync = (method, model) ->
console.log "Syncing:", method, model
oldSync(arguments...)
通常情況下,這工作正常。我得到這個在控制檯:
New? true
Syncing: create > Listing
SAVED > Listing
RESPONSE > Object
和網絡督察看到:
listings POST 200 application/json
我也看到登錄我的(Rails)的應用程序日誌中的POST請求。
但是,創建了幾個房源後,我開始在控制檯上看到以下行爲:
New? true
Syncing: create > Listing
SAVED > Listing
RESPONSE [> Object, > Object, > Object, > Object, > Object, > Object]
其中每個Object
已經保存在數據庫中的列表。 Network Inspector和我的應用程序日誌還表明Backbone對/列表執行了GET請求。此外,已經「保存」的第三行中的Listing
是列表的客戶端表示(沒有服務器通常插入的一些附加細節)。
我一直沒能找到任何模式,以此行爲;有時,Backbone堅持在GET之後發送GET,並且在刷新之後開始工作。有時它會一直運行直到我重新啓動應用程序服務器樂於探索任何建議!
[編輯]
好吧,一些偵探後,看來我打電話fetch()
在Listings
收集後,Listing#save()
開始這樣做。該問題僅出現在筆記本電腦上,該筆記本電腦正在運行Chrome Dev(v19)。在其他瀏覽器和較舊版本的Chrome上,它工作正常。
乍一看,當您使用您正在構建的應用程序時,似乎有一些事件綁定正在閒逛。你有可能從你的意見中發佈代碼嗎? – ryanmarc 2012-03-19 17:08:08
在過去三天裏,我們花了很多時間寫模特和藏品來與我們的休息服務交流,但我從未見過這種情況。你有沒有現場的例子? – tkone 2012-03-21 23:47:47
+1'偵察':) – itsjeyd 2014-02-11 08:56:48