'use strict'; define( ['backbone.modelbinder'], function (ModelBinder) { return function () { var originalOnRender = this.prototype.onRender, originalBeforeClose = this.prototype.onBeforeClose; this.prototype.onRender = function () { if (!this.model) { throw 'View has no model for binding'; } if (!this._modelBinder) { this._modelBinder = new ModelBinder(); } this._modelBinder.bind(this.model, this.el); if (originalOnRender) { originalOnRender.call(this); } }; this.prototype.beforeClose = function () { if (this._modelBinder) { this._modelBinder.unbind(); delete this._modelBinder; } if (originalBeforeClose) { originalBeforeClose.call(this); } }; return this; }; } );