読者です 読者をやめる 読者になる 読者になる

Backbone.jsで値をセットしたときにデータを変換したい

javascript

例えばこんな感じで文字列で渡した日付を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);
  }
});

これやるためだけに大掛かりすぎるのでもっといい方法あるよね、きっと。いい方法モトム。