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

サーバーは、ID (または ID のみ) を含む、保存されたモデルを表す JSON で POST に応答する必要があります。たとえば、return{"id": "123"}と backbone はモデルを更新します。

于 2012-07-27T02:38:41.277 に答える
0

Backbone-> Create、そしてもちろん、@ Robertが言ったように、wait:trueを追加して、サーバーがモデル(IDを含む)を送り返すまでビューが更新されないようにすることができます。

于 2012-07-26T00:43:55.167 に答える
0

save() に渡すオプションに、wait:true を追加します。モデルの属性 (id を含む) は、このリクエストに対してサーバーが返す任意の json オブジェクトに設定されます。

于 2012-07-26T00:26:31.260 に答える