2013年7月25日木曜日

Model の変化を Collection で処理する

Backbone.js の Collection は内包する Model の change イベントをキャッチできます。

Collection 内の Model を1つだけ選択できるようなプログラムを書く場合、
各 Model に selected 属性を追加して、その変化を Collection 側で取得して処理するのがよいです。
var collection = Backbone.Collection.extend({
    initialize: function() {
        this.on('change:selected', function(selectedModel) {
            console.log('collection 内の Model の selected が変更されました。');
            this.each(function(model) {
                model.set('selected', false, {silent: true});
            });
            selectedModel.set('selected', true, {silent: true});
        });
    }
});


以下に Collection 内の Model を1つだけ選択するサンプルを公開しました。
http://okanoworld.appspot.com/sample/backbonejs/select/index.html

ソースコードはこちら
https://github.com/yokano/sample/tree/master/backbonejs/select

0 件のコメント:

コメントを投稿