0

いくつかの URL を提供する REST API があります。

/rest/messages

すべてのメッセージを提供します。メッセージは JSON/バックボーン モデルです

{ 
  title: 'foo',
  body : 'bar'
}

私が持っている単一のメッセージを取得するには:

/rest/messages/:id

メッセージ ID 配列を使用してバックボーン コレクションをフェッチすることは可能ですか? メッセージ リスト全体は必要ありませんが、ID で指定したいくつかのメッセージだけが必要です。

モデルを 1 つずつフェッチしてコレクションをいっぱいにすることもできますが、Backbone にこれを行うためのよりクリーンな方法があるかどうか疑問に思っています。ありがとう

4

2 に答える 2

6

ドキュメントによると、呼び出しajaxにオプションを渡すことができます。fetchしたがって、実行中のフェッチ呼び出しに属性idsとして渡しdata、それに基づいて、サーバーからそれぞれのモデルを返すことができます。

たとえば(フェッチを行う場合)、

collection.fetch({
  data : {
    message_ids : [1, 3, 5] // array of the message ids you want to retrieve as models
  }
})

このmessage_id配列はparameters、で実行されているサーバーコードで(あなたの場合は名前がわかりません)としてアクセスできます。/rest/messagesそこから、として受け取ったIDに基づいて特定のモデルのみを返すことができますmessage_ids。必要なのは、クライアント側が必要なすべてのメッセージモデルのIDを認識している必要があるということだけです。

配列の代わりに任意のデータ構造を使用してmessage_idsを送信できます。

于 2012-11-21T11:33:30.300 に答える
1

サーバー上のコレクションの場所へのコレクション参照の url プロパティ。fetch を使用すると、バックボーンはその URL を使用します。
url プロパティは、url を返す関数にすることもできます。だからあなたはそのようなことをすることができます:

var ids = [1,2,3]
var messages = new MessegecCollection();
messages.url = function() {
    return "/rest/messages/"+ids.join("-"); //results "/rest/messages/1-2-3"
}
messages.fetch();

コレクション内に、URL を生成および設定するメソッドを作成したり、一連のモデルをフェッチしたりすることもできます。
あとは、次の URL をサポートするだけです: /rest/messages/1-2-3

お役に立てれば!

于 2012-11-21T13:37:29.923 に答える