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