1

restful api im 呼び出しは、(モデルの) 目的のペイロードを「ペイロード」内にラップします。

1. this.add(model) にそれぞれを追加し、2. 配列を返すことによってのみ、この方法で動作させることができます

注: 「これ」はバックボーン コレクションです。

parse: function(resp, xhr) {
  var that = this;
  var ourPayload = resp.Payload;
  ourPayload.forEach( function(model) { that.add(model);} );
  return ourPayload;
},

すべての例で、単純に行うことを期待しています

parse: function(resp, xhr) {
     return resp.Payload;
}

残りの API の形式は、"{"Success":"true", ...., "Payload":[{model},{model},{model}], .... } です。

collection.add(model) の必要性を説明できますか

4

2 に答える 2

2

問題は、コレクションのフェッチ中に、各モデルの解析が定義されている場合にも呼び出されることです。モデルの解析関数、まさにこの場合に定義される可能性があります。RESTful API 形式は、ペイロードの周りにラッパーを使用しています。

バックボーン ドキュメント

モデルまたはコレクションをフェッチした後、定義されたすべての解析関数が実行されるようになりました。したがって、両方の関数が定義されている場合、コレクションをフェッチして新しいモデルを取得すると、コレクションの両方がリストを解析し、次に各モデルが順番に解析される可能性があります。

したがって、以下のように解析を定義する必要があります。「ペイロード」は、ペイロード、データ、結果など、ラッパーの名前であることに注意してください。

   // Within a collection, it will not.
   parse: function (response, xhr) {
     if (_.isObject(response.Payload)) {
         return response.Payload;
     } else {
         return response;
     }
   }

その手がかりは、このSOの回答でnikoshrから来ました

さらに場合によっては、勇敢なバックエンド担当者がモデルを配列でラップした場合、ペイロード インデックス [0] を使用して次のことを行う必要があります。

   parse: function (response, xhr) {
     if (_.isObject(response.Payload)) {
         return response.Payload[0];
     } else {
         return response;
     }
   }
于 2013-10-15T20:48:31.987 に答える