次に、Backbone.Collectionの使い方を紹介します。
文字通り、Modelの集合を表します。
前回定義したMemoのCollectionを定義してみましょう。
var MemoList = Backbone.Collection.extend({
Model : Memo,
urlRoot : BASE_URL + '/apps/<appID>/users/me/buckets/memo/objects',
getAll : function(callback) {
var list = this;
this.fetch({
headers : context.createHeader('application/vnd.kii.QueryRequest+json', true),
type : "POST",
data : '{"bucketQuery":{"clause":{"type":"all"},"orderBy":"_modified","descending":true}}',
url : BASE_URL + '/apps/<appID>/users/me/buckets/memo/query',
success : function() {
callback.success(list);
}
});
},
parse : function(resp) {
return resp.results;
}
});
Modelで、どのモデルの集合かを指定します。ここではMemoを指定しました。
Collectionのfetchメソッドで実際にリクエストを投げます。今回はバックエンドがKii Cloudなのでqueryを実行しています。
fetchの実行が終わった後、parseメソッドが呼ばれます。ここでは、バックエンドのレスポンスをパースし、Modelの配列部分を返します。バックエンドがJSON Arrayを返すのであれば、実装は不要だと思われます。。。
Collectionを使うと、サーバーのレスポンスを正しくModelの配列に変換してくれます。また、Collection内のModelを削除した時、自動でCollectionから削除したオブジェクトを除去してくれたりもします。