[英]backbone.js model.save doesn't set the id
我繼承了一個基於骨干js的應用程序。 我真的很喜歡骨干,我只是開始了解它。 根據我的理解,當在新實體上調用model.save時,它應該將其發布到服務器,服務器應該返回相同的json,但是會分配id,並且主干應該將該id保存到模型中,以便進一步保存結果到PUT使用ID進行更新。
但是,當我調用model.save()
然后嘗試獲取model.id屬性時,它為null。
這是因為我沒有回電話嗎? 所以該物業尚未設定?
我如何設置成功回調? 調用model.save({success: function(){...}})
不起作用?
這是實際的電話:
model.save(null, {
success: function () {
alert('success');
},
error: function () {
alert('error');
}
});
對此有點奇怪。 設置silent: true
只會使得所有事件都不被觸發。 其他一切都應該正常發生。 換句話說,不要假設設置slient: true
就是這里的正確答案......
我懷疑你實際上是在某個地方拋出異常(可能是通過驗證或類似的東西)並且不知何故,設置silent: true
導致一切都流過。
我強烈建議您刪除此選項並檢查您的控制台或使用調試器運行...我懷疑您有一個潛伏在某處的錯誤。
一些建議:看看model.set
函數的帶注釋的源代碼 。 在調用success
回調之前調用它。 在該函數內部,如果silent
是false,將會發生一些事情。 這些包括驗證 ,單個屬性更改觸發器和全局更改觸發器。 我敢打賭,驗證失敗或聽取更改的事情都會引發異常。
我有同樣的問題,原來是因為我的自定義parse
失敗了
我需要在保存時設置靜音:true:
model.save(null, {
silent: true,
success: function () {
alert('success');
},
error: function () {
alert('error');
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.