forked from blueimp/JavaScript-Templates
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdemo.js
More file actions
69 lines (59 loc) · 1.72 KB
/
demo.js
File metadata and controls
69 lines (59 loc) · 1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
* JavaScript Templates Demo
* https://github.com/blueimp/JavaScript-Templates
*
* Copyright 2013, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/MIT
*/
/* global document, tmpl */
(function () {
'use strict';
var templateInput = document.getElementById('template');
var dataInput = document.getElementById('data');
var resultNode = document.getElementById('result');
var templateDemoNode = document.getElementById('tmpl-demo');
var templateDataNode = document.getElementById('tmpl-data');
function renderError(title, error) {
resultNode.innerHTML = tmpl(
'tmpl-error',
{title: title, error: error}
);
}
function render(event) {
event.preventDefault();
var data;
try {
data = JSON.parse(dataInput.value);
} catch (e) {
renderError('JSON parsing failed', e);
return;
}
try {
resultNode.innerHTML = tmpl(
templateInput.value,
data
);
} catch (e) {
renderError('Template rendering failed', e);
}
}
function empty(node) {
while (node.lastChild) {
node.removeChild(node.lastChild);
}
}
function init(event) {
if (event) {
event.preventDefault();
}
templateInput.value = templateDemoNode.innerHTML.trim();
dataInput.value = templateDataNode.innerHTML.trim();
empty(resultNode);
}
document.getElementById('render').addEventListener('click', render);
document.getElementById('reset').addEventListener('click', init);
init();
}());