Files
BitwiseCmd/src.old/js/components/templatesFeature.js
Borys_Levytskyi de0dfba04f React boilerplate
2016-11-20 18:59:57 +02:00

52 lines
1.4 KiB
JavaScript

(function(app) {
"use strict";
function Template(html, isCompiled) {
this.html = html;
this.isCompiled = isCompiled === true;
}
Template.prototype.render = function (model) {
if(this.isCompiled) {
return app.get('html').element(this.process(model));
}
return app.get('html').element(this.html, model);
};
app.templates = [];
app.template = function (key) {
var tpl = this.templates[key];
if(tpl == null) {
throw new Error(key + ' template is not found');
}
return tpl;
};
app.run(function() {
readTemplates(app.get('rootView'));
});
function readTemplates(containerEl) {
var els = containerEl.querySelectorAll('[data-template]');
var store = app.templates;
Array.prototype.forEach.call(els, function (element) {
var key = element.getAttribute('data-template');
if (store[key] instanceof Template) {
console.warn(key + ' templates already registered');
return;
}
var template = new Template(element.innerHTML);
store[key] = template;
if (element.hasAttribute('data-compiled')) {
template.process = app.get('html').compileTemplate(template.html);
template.isCompiled = true;
}
});
}
})(window.app);