Google Closure Library の DataSource とか
MVCの説明: https://sites.google.com/site/closurelibwiki/workflow/mvc
サンプル: http://d.hatena.ne.jp/griefworker/20110419/closure_library_datasource
テストサンプル: https://bitbucket.org/rokujyouhitoma/closure-sample/src/91e43f092138/src/goog/datasource/expr_test.html
goog.ds.DataManagerって使われてるのかな。
Arrayの操作が微妙に使いづらい。
読み込み専用、またはAjaxを通じたJsonでしかデータを更新しないなら使えるのかもわからんが、かゆいところに手が届かない割にオーバースペックな気がする。
いいサンプルないかな。
とりあえず
/** * @constructor */ app.model.Model = function(opt_value){ goog.base(this); this.value_ = opt_value; this.components_ = []; this.callbacks_ = []; this.parent_ = null; }; goog.inherits(app.model.Model, goog.events.EventTarget);
こんなクラスを作って、setValueを呼び出したときに関連するcomponentsとcallbacksを呼び出すようなモデルを作った。