|
|
|
'use strict';
|
|
|
|
|
|
|
|
var oldMarionetteItemViewRender = Marionette.ItemView.prototype.render;
|
|
|
|
var oldItemCollectionViewRender = Marionette.CollectionView.prototype.render;
|
|
|
|
|
|
|
|
|
|
|
|
Marionette.View.prototype.viewName = function () {
|
|
|
|
if (this.template) {
|
|
|
|
var regex = new RegExp('\/', 'g');
|
|
|
|
|
|
|
|
return this.template
|
|
|
|
.toLocaleLowerCase()
|
|
|
|
.replace('template', '')
|
|
|
|
.replace(regex, '-');
|
|
|
|
}
|
|
|
|
|
|
|
|
return undefined;
|
|
|
|
};
|
|
|
|
|
|
|
|
Marionette.ItemView.prototype.self$ = function (selector) {
|
|
|
|
return this.$(selector).not("[class*='iv-'] " + selector);
|
|
|
|
};
|
|
|
|
|
|
|
|
Marionette.ItemView.prototype.render = function () {
|
|
|
|
|
|
|
|
var result = oldMarionetteItemViewRender.apply(this, arguments);
|
|
|
|
|
|
|
|
this.$el.removeClass('iv-' + this.viewName());
|
|
|
|
|
|
|
|
//check to see if el has bindings (name attribute)
|
|
|
|
// any element that has a name attribute and isn't child of another view.
|
|
|
|
if (this.self$('[name]').length > 0) {
|
|
|
|
if (!this.model) {
|
|
|
|
throw 'view ' + this.viewName() + ' has binding attributes but model is not defined';
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!this._modelBinder) {
|
|
|
|
this._modelBinder = new Backbone.ModelBinder();
|
|
|
|
}
|
|
|
|
|
|
|
|
this._modelBinder.bind(this.model, this.el);
|
|
|
|
}
|
|
|
|
|
|
|
|
this.$el.addClass('iv-' + this.viewName());
|
|
|
|
|
|
|
|
return result;
|
|
|
|
};
|