2013年7月15日月曜日

Backbone.js でイベントを通知せずに Model を操作する

Backbone.js では Model と View がイベントを通してやり取りします。

例えば View が listenTo() を使って Model の変更を監視し、
変更があったら画面へ反映させるといったことができます。

しかし、画面へ反映させず Model だけをこっそり変更したい場合があるかもしれません。
その場合は Model 変更時に silent オプションを追加することで実現出来ます。
silent に設定された操作は、他のオブジェクトへイベントを発行しません。
addBookSilentButtonHasClicked: function() {
    var title = window.prompt('タイトルを入力してください');
    if(title == '') {
        return;
    }
    this.model.add({title: title}, {silent: true});
}


以下に実際に動くサンプルプログラムを置きました。
http://okanoworld.appspot.com/sample/backbonejs/silent_event/index.html


ソースコードは GitHub で公開しています。
https://github.com/yokano/sample/tree/master/backbonejs/silent_event



リストにモデルの内容が表示されています。
左側の追加ボタンを押すと通常通りモデルが追加されます。
サイレントボタンを押すと、 slient にモデルが追加されます。
silent の場合は View は Model の変更を通知されないので画面の再描画が行われません。


0 件のコメント:

コメントを投稿