2012-08-09 75 views
2

我有一個處理表單的視圖。
這種形式有上點擊觸發了保存按鈕的事件:骨幹:在創建時處理服務器響應

var FormView = Backbone.View.extend({ 
    initialize : function(options){ 
     this.collection = new PlayerCollection({url:options.url}); 
     this.collection.bind('add', this.addPlayer); 
     this.collection.bind('reset', this.addAllPlayers); 
    }, 
    saveNewPlayer : function(event){ 

     this.collection.create({ 
     name : this.$form.find('input[name="name"]').val(), 
     }); 
    } 
}); 

(我中省略不需要在這個例子中的一些代碼)。

該代碼正確保存新模型,將數據發送到服務器並創建與此新模型關聯的視圖。 但我想知道如何處理服務器響應時,數據發佈到它。
例如,如果服務器無法保存數據或發現其他類型的錯誤,我該如何處理?

我是新來的主幹,我從現在開始使用jQuery來編寫我的應用程序,所以我習慣於使用successerror回調$.ajax優惠。

回答

4

骨幹提供了類似的回調,添加第二個選項哈希的創建(和讀取和保存)命令,就像這樣:

this.collection.create({ 
    name : this.$form.find('input[name="name"]').val(), 
},{ 
    error : function(model, response){}, 
    success: function(model, response){} 
}); 
+1

這可能是值得加入到這個答案,你的服務器上你想要什麼要做的是以200以外的http狀態進行響應。這就是Backbone知道如何執行錯誤回調。因此,獲取dataIn,驗證它,授權它,運行一個事務(並且可能出錯)等等,你以適當的狀態回覆(400,500等)。你可以從服務器返回任何你想要的東西(比如錯誤對象和有關錯誤的信息),並且可以通過響應參數訪問它。 – jmk2142 2012-08-09 19:41:54

+0

好評!一個很好的例子就是在表單驗證中使用400-錯誤,並將服務器發送的驗證錯誤發送給主幹中的表單處理代碼。 – 2012-08-09 20:11:49

+0

這是在哪裏記錄?我無法在http://backbonejs.org/#Collection-create – 2012-08-09 20:34:11