在我的Marionette.CompositeView
中,可以创建一个向服务器发出放置请求的新模型(1)。
put请求没问题,但是当我将新模型添加到集合时,新模型会错过服务器创建的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 :(得分:1)
您的服务器需要使用代表已保存模型的JSON来响应POST,包括ID(或ID)。例如,返回{"id": "123"}
和骨干将为您更新模型。
答案 1 :(得分:0)
在传递给save()的选项中添加wait:true。然后,模型的属性(包括id)将被设置为服务器为此请求返回的任何json对象。
答案 2 :(得分:0)
Backbone->Create当然,就像@Robert所说,你可以添加wait:true,这样你的视图就不会更新,直到服务器发回模型(包括ID)