2014-09-02 66 views
2

編輯1:此問題已無效。欲瞭解更多信息,請查看本問題最後的編輯#2。Backbone Model.save返回undefined而不是jqxhr

骨幹文檔說如果驗證成功,Backbone.Model.save函數返回一個jqXHR對象,否則返回false。所以如果沒有定義驗證方法,model.save方法應該返回一個jqXHR,但實際上它返回'undefined'。 model.fetch正常工作並返回一個jqXHR對象。

jqXHR對象對於鏈接其他被緩存的對象很有用。我正在調用多個模型的保存,並希望在所有保存方法完成時更新UI。我想這樣做

$.when(promise1,promise2,.....) 
.done().then(function(){ 
    /* some callback code here */ 
}) 

這裏是文檔說什麼

保存 model.save([屬性],[選項])
保存模型到數據庫(或替代持久層),通過委託給Backbone.sync。如果驗證成功,則返回jqXHR,否則返回false。

這裏是我的代碼

var x = new Backbone.Model(); 
x.url = "https://stackoverflow.com/a/valid/url"; 
var y = x.save({key1: "value1"}); 
var z = x.fetch(); 
console.log(typeof(y)); 
console.log(typeof(z)); 

控制檯輸出

undefined 
a jqXHR object 

而不是記錄一個jqXHR對象,這會將 「不確定」 到控制檯。有人可以幫我弄這個嗎?

編輯2:我忘了提及我重寫了我的代碼中的Backbone.sync方法,並且在我重寫的方法中,我沒有返回任何東西。由於model.save委託給Backbone.sync(或其自定義同步方法),因此save方法返回'undefined'。

+4

適用於我所顯示的內容。 http://jsfiddle.net/nikoshr/cqc88fkx/ – nikoshr 2014-09-02 08:22:58

+0

ajax調用時,在開發工具中返回的響應是什麼? – kinakuta 2014-09-02 08:25:49

+0

@kinakuta:我收到的迴應是我從服務器發回的json。這工作正常。只是'save'方法沒有返回jqXHR – GunnerFan 2014-09-02 08:47:26

回答

4

我忘了提及我重寫了我的代碼中的Backbone.sync方法,並且在我的覆蓋方法中,我沒有返回任何東西。由於model.save委託給Backbone.sync,保存方法返回'undefined'。我更正了我的代碼以返回jqXHR對象。現在一切運行良好。

+0

保存我的一天... – 2017-02-18 13:09:29