Readarr/src/UI/Mixins/AsModelBoundView.js

48 lines
1.3 KiB
JavaScript

'use strict';
define(
['backbone.modelbinder'],
function (ModelBinder) {
return function () {
var originalOnRender = this.prototype.onRender;
var 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();
}
var options = {
changeTriggers: {'': 'change typeahead:selected typeahead:autocompleted', '[contenteditable]': 'blur', '[data-onkeyup]': 'keyup'}
};
this._modelBinder.bind(this.model, this.el, null, options);
if (originalOnRender) {
originalOnRender.call(this);
}
};
this.prototype.onBeforeClose = function () {
if (this._modelBinder) {
this._modelBinder.unbind();
delete this._modelBinder;
}
if (originalBeforeClose) {
originalBeforeClose.call(this);
}
};
return this;
};
}
);