2012-07-25 59 views
1

在我的Marionette.CompositeView中,可以創建向服務器(1)發出放入請求的新模型。
放入請求是好的,但是當我將新模型添加到集合中時,新模型會忽略由服務器創建的ID。
我應該如何解決這個問題?如何在創建保存新模型時獲取ID

應該
1)POST請求發送ID到客戶端或
2)我必須作出從客戶的請求,以獲得ID?


(1)

return Marionette.CompositeView.extend({ 

    submitForm: function (event) { 
      this.textAreaElement = this.$el.find('[data-tid="announcement"]'); 
      this.messageModel = new MessageModel(); 
      this.messageModel.save({ 
       message: this.textAreaElement.val() 
      }, { 
       wait: true, 
       success: this.onSuccess, 
       error: this.onError 
      }); 
    }, 

    onSuccess: function() { 
     console.log(this.messageModel.get('id')); // undefined 
     this.collection.add(this.messageModel); // I need to get also the id of the following model 
               // which is created by the server 
    } 

}); 

回答

0

在傳遞給保存的選項()增加等待:真實。然後,模型的屬性(包括id)將被設置爲服務器爲此請求返回的任何json對象。這樣你的視圖不會更新,直到服務器發回你的模型(包括ID)

+0

我沒有更新我的問題,把選項'等待:true'。你能檢查它嗎?謝謝。 Unforunatilly當我在onSuccess函數中獲取id時,id是未定義的。它應該是服務器問題嗎? – js999 2012-07-26 07:52:24

+0

是的,服務器需要發送你想要的模型的ID和任何其他值 – 2012-07-26 11:00:36

0

Backbone->Create當然,像@Robert說,你可以添加等待帶JSON的POST表示保存的模型,包括ID(或者僅僅是ID)。例如,返回{"id": "123"},主幹會爲您更新模型。

+0

我沒有更新我的問題,並選擇'wait:true'選項。 Unforunatilly當我在onSuccess函數中獲取id時,id是未定義的。它應該是服務器問題嗎? – js999 2012-07-26 07:52:36

+0

我認爲是的,你應該手動POST以檢查它的響應。你使用什麼服務器? – 2012-07-26 10:54:32

+0

昨天我問了一個類似的問題,得到了我需要的答案。 http://stackoverflow.com/questions/11628076/backbone-js-getting-id-from-collection-create – Joe 2012-07-26 22:32:45

1

你的服務器需要的迴應真:

相關問題