編輯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'。
適用於我所顯示的內容。 http://jsfiddle.net/nikoshr/cqc88fkx/ – nikoshr 2014-09-02 08:22:58
ajax調用時,在開發工具中返回的響應是什麼? – kinakuta 2014-09-02 08:25:49
@kinakuta:我收到的迴應是我從服務器發回的json。這工作正常。只是'save'方法沒有返回jqXHR – GunnerFan 2014-09-02 08:47:26