2012-07-25 58 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

你的服务器需要的回应真:

相关问题