1

在我的Marionette.CompositeView情况下,可以创建一个向服务器发出 put 请求的新模型(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
    }

});
4

3 回答 3

1

您的服务器需要使用代表已保存模型的 JSON 响应 POST,包括 ID(或只是 ID)。例如,return{"id": "123"}和backbone 将为您更新模型。

于 2012-07-27T02:38:41.277 回答
0

在传递给 save() 的选项中,添加 wait:true。然后将模型的属性(包括 id)设置为服务器为此请求返回的任何 json 对象。

于 2012-07-26T00:26:31.260 回答
0

Backbone-> Create,当然,就像@Robert 所说,您可以添加 wait:true 以便在服务器发回您的模型(包括 ID)之前不会更新您的视图

于 2012-07-26T00:43:55.167 回答