Skip to content

Instantly share code, notes, and snippets.

@leeoniya
Last active November 22, 2016 08:27
Show Gist options
  • Save leeoniya/cfe75cf9c5eac5359cf8b7ea86b14f84 to your computer and use it in GitHub Desktop.
Save leeoniya/cfe75cf9c5eac5359cf8b7ea86b14f84 to your computer and use it in GitHub Desktop.
var domvm = require('./domvm.full.min.js');
var el = domvm.defineElement,
vw = domvm.defineView;
function mkArr(count, fn, frag) {
let i = 0, arr = [];
while (i < count)
frag ? arr.push.apply(arr, fn(i++)) : arr.push(fn(i++));
return arr;
}
function App(vm, data) {
return () =>
el('.app', [
vw(Header, data),
vw(Content, data),
vw(Footer, data),
])
}
function Header(vm, data) {
return () =>
el('.header', mkArr(data.childrenNum, i =>
el('div', { id : 'header-' + i })
))
}
function Content(vm, data) {
return () =>
el('.content', mkArr(data.childrenNum, i => [
el('b', 'bold' + i),
el('span.link', [
vw(Link, { href : '/', value : 'link-' + i })
]),
el('i', 'italic' + i),
el('div', [
el('div', [
el('div', [
el('div', 'div')
])
])
])
], true))
}
function Link(data) {
return () =>
el('a', { href : data.href }, data.value)
}
function Footer(data) {
return () =>
el('.footer', mkArr(data.childrenNum, i =>
el('div', { id : 'footer-' + i })
))
}
module.exports = childrenNum => () => domvm.createView(App, { childrenNum }).html(true, true);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment