2013-02-20 88 views
0

所以我的問題是這樣的。Backbone.js .save()JSON響應屬性問題

使用主幹在MYSQL數據庫中保存內容。

當我調用this.model.save()我得到一個非常奇怪的問題。

模型會將JSON響應保存爲對象,而不會更新新值。

所以我在開發工具中的屬性看起來像這樣。

屬性:對象

0: Object 

ID: "4" 

Name: "TEST" 

Title: "MEOW" 

Stuff: "1" 

When: "2013-02-14 22:17:14" 

的0不應該存在。我確實確認了json對象是有效的,所以我知道這不是問題。

回答

1

它看起來像你的JSON響應實際上是一個單一的元素,而不是一個對象的數組。

當Backbone調用model.set(response)時,會創建屬性0,後者會將響應對象的所有密鑰複製到屬性哈希值。如果一個數組傳遞給set,這就是發生了什麼。

您應該修復您的服務器以使用原始對象({...})而不是陣列([{...}])進行響應。如果您無法更改服務器行爲,則可以覆蓋Model.parse以打開客戶端上的響應:

var Model = Backbone.Model.extend({ 
    parse: function(response) { 
    return _.isArray(response) ? response[0] : response; 
    } 
}); 
+0

感謝您的快速響應。您的解決方案在服務器端完美運行。但是沒有嘗試過主幹代碼。 – Lordphartmore 2013-02-20 23:29:10