7

モデルで複合キーを使用しており、複合キーに基づいて ID を生成しています。

app.Assignment = Backbone.Model.extend({
    idAttribute : [ 'personId', 'jobId' ],
    parse : function(resp) {
        resp.id = resp.personId + "_" + resp.jobId;
        return resp;
    }
});

しかし、API からフェッチするときに parse メソッドで id を設定していますが、Backbone は Assignment のすべてのインスタンスが新しいと考えています。その結果、Backbone は DELETE を実行せず、更新時に PUT の代わりに POST を実行します。これを回避するにはどうすればよいですか、またはそれを行う「正しい方法」は何ですか?

アップデート:

resp.id を this.id に置き換えると問題が解決するようです。

4

3 に答える 3

0

バックボーンで複合 ID を使用したことはありませんが、これはあなたの問題に対する簡単な答えになると思います。

initialize: function() {
      this.set("id", this.generateID());
},
generateID = function () {
    return this.personId + + "_" + this.jobId;
}

このコードをバックボーン モデル定義に使用すると、モデルごとに一意の ID が作成され、更新と保存に問題が発生することはありません (idAttribute を設定する必要はありません)。

于 2016-02-26T13:24:20.920 に答える