Backbone.jsで値をセットしたときにデータを変換したい
例えばこんな感じで文字列で渡した日付をDateオブジェクトに変換みたいなことがしたい。
var myModel = new MyModel({ date: '2012-02-02' }); console.log( myModel.get('date') ); // Date Object myModel.set('date', '2012-02-03'); console.log( myModel.get('date') ); // Date Object
結局setメソッドを上書きするって方法しか見つからなかった。
var MyModel = Backbone.Model.extend({ set: function(key, value, options) { var attrs, attr, val; if (_.isObject(key) || key == null) { attrs = key; options = value; } else { attrs = {}; attrs[key] = value; } if (attrs.date) { attrs.date = new Date(attrs.date); } return Backbone.Model.prototype.set.call(this, attrs, options); } });
これやるためだけに大掛かりすぎるのでもっといい方法あるよね、きっと。いい方法モトム。