Chris@0: /** Chris@0: * @file Chris@0: * A Backbone Model subclass that enforces validation when calling set(). Chris@0: */ Chris@0: Chris@17: (function(Drupal, Backbone) { Chris@17: Drupal.quickedit.BaseModel = Backbone.Model.extend( Chris@17: /** @lends Drupal.quickedit.BaseModel# */ { Chris@17: /** Chris@17: * @constructs Chris@17: * Chris@17: * @augments Backbone.Model Chris@17: * Chris@17: * @param {object} options Chris@17: * Options for the base model- Chris@17: * Chris@17: * @return {Drupal.quickedit.BaseModel} Chris@17: * A quickedit base model. Chris@17: */ Chris@17: initialize(options) { Chris@17: this.__initialized = true; Chris@17: return Backbone.Model.prototype.initialize.call(this, options); Chris@17: }, Chris@0: Chris@17: /** Chris@17: * Set a value on the model Chris@17: * Chris@17: * @param {object|string} key Chris@17: * The key to set a value for. Chris@17: * @param {*} val Chris@17: * The value to set. Chris@17: * @param {object} [options] Chris@17: * Options for the model. Chris@17: * Chris@17: * @return {*} Chris@17: * The result of `Backbone.Model.prototype.set` with the specified Chris@17: * parameters. Chris@17: */ Chris@17: set(key, val, options) { Chris@17: if (this.__initialized) { Chris@17: // Deal with both the "key", value and {key:value}-style arguments. Chris@17: if (typeof key === 'object') { Chris@17: key.validate = true; Chris@17: } else { Chris@17: if (!options) { Chris@17: options = {}; Chris@17: } Chris@17: options.validate = true; Chris@17: } Chris@17: } Chris@17: return Backbone.Model.prototype.set.call(this, key, val, options); Chris@17: }, Chris@0: }, Chris@17: ); Chris@17: })(Drupal, Backbone);