簡體   English   中英

backbone.js model.save沒有設置id

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM