如何在创建保存新模型时获取id

时间:2012-07-25 21:36:36

标签: javascript backbone.js marionette

在我的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
    }

});

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

Backbone->Create当然,就像@Robert所说,你可以添加wait:true,这样你的视图就不会更新,直到服务器发回模型(包括ID)