Backbone.Collection

ツイート このエントリーをはてなブックマークに追加
ブログトップへ

次に、Backbone.Collectionの使い方を紹介します。

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を使うの?

Collectionを使うと、サーバーのレスポンスを正しくModelの配列に変換してくれます。また、Collection内のModelを削除した時、自動でCollectionから削除したオブジェクトを除去してくれたりもします。

ブログトップへ