Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.9.1.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <script>
(function (n, t, i) { "use strict"; function bt(n) { return n } function tr(n) { return n } function kt(n) { o._dbgMode = n; yt = n ? "Unavailable (nested view): use #getIndex()" : ""; g("dbg", hi.dbg = it.dbg = n ? tr : bt) } function dt(n) { return { getTgt: n, map: function (t) { var r, i = this; i.src !== t && (i.src && i.unmap(), typeof t == "object" && (r = n.apply(i, arguments), i.src = t, i.tgt = r)) } } } function ot(n) { this.name = (u.link ? "JsViews" : "JsRender") + " Error"; this.message = n || this.name } function f(n, t) { var i; n = n || {}; for (i in t) n[i] = t[i]; return n } function tt(n) { return typeof n == "function" } function gt(n, t, i) { return (!a.rTag || n) && (p = n ? n.charAt(0) : p, w = n ? n.charAt(1) : w, s = t ? t.charAt(0) : s, v = t ? t.charAt(1) : v, nt = i || nt, n = "\\" + p + "(\\" + nt + ")?\\" + w, t = "\\" + s + "\\" + v, y = "(?:(?:(\\w+(?=[\\/\\s\\" + s + "]))|(?:(\\w+)?(:)|(>)|!--((?:[^-]|-(?!-))*)--|(\\*)))\\s*((?:[^\\" + s + "]|\\" + s + "(?!\\" + v + "))*?)", a.rTag = y + ")", y = new RegExp(n + y + "(\\/)?|(?:\\/(\\w+)))" + t, "g"), vt = new RegExp("<.*>|([^\\\\]|^)[{}]|" + n + ".*" + t)), [p, w, s, v, nt] } function ir(n, t) { t || (t = n, n = i); var e, f, o, u, r = this, s = !t || t === "root"; if (n) { if (u = r.type === t ? r : i, !u) if (e = r.views, r._.useKey) { for (f in e) if (u = e[f].get(n, t)) break } else for (f = 0, o = e.length; !u && f < o; f++) u = e[f].get(n, t) } else if (s) while (r.parent.parent) u = r = r.parent; else while (r && !u) u = r.type === t ? r : i, r = r.parent; return u } function ni() { var n = this.get("item"); return n ? n.index : i } function ti() { return this.index } function rr(t) { var u, e = this, o = e.linkCtx, r = (e.ctx || {})[t]; return r === i && o && o.ctx && (r = o.ctx[t]), r === i && (r = hi[t]), r && tt(r) && !r._wrp && (u = function () { return r.apply(!this || this === n ? e : this, arguments) }, u._wrp = 1, f(u, r)), u || r } function ur(n, t, u) { var f, e, h, o = +u === u && u, s = t.linkCtx; if (o && (u = (o = t.tmpl.bnds[o - 1])(t.data, t, r)), e = u.args[0], n || o) { f = s && s.tag; f || (f = { _: { inline: !s, bnd: o }, tagName: n + ":", flow: !0, tagCtx: u, _is: "tag" }, s && (s.tag = f, f.linkCtx = s, u.ctx = l(u.ctx, s.view.ctx))); for (h in u.props) ft.test(h) && (f[h] = u.props[h]); u.view = t; f.ctx = u.ctx || {}; delete u.ctx; t._.tag = f; e = st(f, f.convert || n !== "true" && n)[0]; e = o && t._.onRender ? t._.onRender(e, t, o) : e; t._.tag = i } return e != i ? e : "" } function st(n, t) { var r = n.tagCtx, u = r.view, i = r.args; return t = t && ("" + t === t ? u.getRsc("converters", t) || h("Unknown converter: '" + t + "'") : t), i = !i.length && !r.index && n.autoBind ? [u.data] : t ? i.slice() : i, t && (t.depends && (n.depends = a.getDeps(n.depends, n, t.depends, t)), i[0] = t.apply(n, i)), i } function fr(n, t) { for (var f, e, u = this; f === i && u;) e = u.tmpl[n], f = e && e[t], u = u.parent; return f || r[n][t] } function er(n, t, u, o, s) { var ct, c, pt, lt, ut, v, at, w, a, et, tt, wt, k, vt, yt, g, y, ot, nt, bt, d = "", ht = +o === o && o, p = t.linkCtx || 0, rt = t.ctx, kt = u || t.tmpl; for (n._is === "tag" && (c = n, n = c.tagName, o = c.tagCtxs), c = c || p.tag, ht && (o = (wt = kt.bnds[ht - 1])(t.data, t, r)), at = o.length, v = 0; v < at; v++) { if (v || u && c || (k = t.getRsc("tags", n) || h("Unknown tag: {{" + n + "}}")), a = o[v], p.tag || (tt = a.tmpl, tt = a.content = tt && kt.tmpls[tt - 1], f(a, { tmpl: (c ? c : k).template || tt, render: fi, index: v, view: t, ctx: l(a.ctx, rt) })), (u = a.props.tmpl) && (u = "" + u === u ? t.getRsc("templates", u) || e(u) : u, a.tmpl = u), c || (k._ctr ? (c = new k._ctr, vt = !!c.init, c.attr = c.attr || k.attr || i) : c = { render: k.render }, c._ = { inline: !p }, p && (p.attr = c.attr = p.attr || c.attr, p.tag = c, c.linkCtx = p), (c._.bnd = wt || p.fn) ? c._.arrVws = {} : c.dataBoundOnly && h("{^{" + n + "}} tag must be data-bound"), c.tagName = n, c.parent = ut = rt && rt.tag, c._is = "tag", c._def = k, c.tagCtxs = o), !v) for (ot in nt = a.props) ft.test(ot) && (c[ot] = nt[ot]); a.tag = c; c.map && c.tagCtxs && (a.map = c.tagCtxs[v].map); c.flow || (et = a.ctx = a.ctx || {}, pt = c.parents = et.parentTags = rt && l(et.parentTags, rt.parentTags) || {}, ut && (pt[ut.tagName] = ut), et.tag = c) } for (t._.tag = c, c.rendering = {}, v = 0; v < at; v++) a = c.tagCtx = c.tagCtxs[v], nt = a.props, y = st(c, c.convert), (yt = nt.map || c).map && (y.length || nt.map) && (g = a.map = f(a.map || { unmap: yt.unmap }, nt), g.src !== y[0] && (g.src && g.unmap(), yt.map.apply(g, y)), y = [g.tgt]), c.ctx = a.ctx, !v && vt && (bt = c.template, c.init(a, p, c.ctx), vt = i, c.template !== bt && (c._.tmpl = c.template)), w = i, ct = c.render, (ct = c.render) && (w = ct.apply(c, y)), y = y.length ? y : [t], w = w !== i ? w : a.render(y[0], !0) || (s ? i : ""), d = d ? d + (w || "") : w; return delete c.rendering, c.tagCtx = c.tagCtxs[0], c.ctx = c.tagCtx.ctx, c._.inline && (lt = c.attr) && lt !== b && (d = lt === "text" ? it.html(d) : ""), ht && t._.onRender ? t._.onRender(d, t, ht) : d } function d(n, t, i, r, u, f, e, o) { var a, h, c, s = this, v = t === "array", l = { key: 0, useKey: v ? 0 : 1, id: "" + nr++, onRender: o, bnds: {} }; s.data = r; s.tmpl = u; s.content = e; s.views = v ? [] : {}; s.parent = i; s.type = t; s._ = l; s.linked = !!o; i ? (a = i.views, h = i._, h.useKey ? (a[l.key = "_" + h.useKey++] = s, s.index = yt, s.getIndex = ni, c = h.tag, l.bnd = v && (!c || !!c._.bnd && c)) : a.splice(l.key = s.index = f, 0, s), s.ctx = n || i.ctx) : s.ctx = n } function or(n) { var t, i, r, u, f; for (t in k) if (u = k[t], (f = u.compile) && (i = n[t + "s"])) for (r in i) i[r] = f(r, i[r], n, t, u) } function sr(n, t, r) { var f, u; return tt(t) ? t = { depends: t.depends, render: t } : ((u = t.template) !== i && (t.template = "" + u === u ? e[u] || e(u) : u), t.init !== !1 && (f = t._ctr = function () { }, (f.prototype = t).constructor = f)), r && (t._parentTmpl = r), t } function ii(r, u, f, o, s, h) { function v(u) { if ("" + u === u || u.nodeType > 0) { try { a = u.nodeType > 0 ? u : !vt.test(u) && t && t(n.document).find(u)[0] } catch (c) { } return a && (u = e[r = r || a.getAttribute(et)], u || (r = r || "_" + gi++, a.setAttribute(et, r), u = e[r] = ii(r, a.innerHTML, f, o, s, h)), a = i), u } } var c, a; return u = u || "", c = v(u), h = h || (u.markup ? u : {}), h.tmplName = r, f && (h._parentTmpl = f), !c && u.markup && (c = v(u.markup)) && c.fn && (c.debug !== u.debug || c.allowCode !== u.allowCode) && (c = c.markup), c !== i ? (r && !f && (wt[r] = function () { return u.render.apply(u, arguments) }), c.fn || u.fn ? c.fn && (u = r && r !== c.tmplName ? l(h, c) : c) : (u = ri(c, h), ct(c.replace(yi, "\\$&"), u)), or(h), u) : void 0 } function ri(n, t) { var i, e = o.wrapMap || {}, r = f({ markup: n, tmpls: [], links: {}, tags: {}, bnds: [], _is: "template", render: ui }, t); return t.htmlTag || (i = bi.exec(n), r.htmlTag = i ? i[1].toLowerCase() : ""), i = e[r.htmlTag], i && i !== e.div && (r.markup = u.trim(r.markup)), r } function hr(n, t) { function u(e, o, s) { var l, h, v, c; if (e && "" + e !== e && !e.nodeType && !e.markup) { for (v in e) u(v, e[v], o); return r } return o === i && (o = e, e = i), e && "" + e !== e && (s = o, o = e, e = i), c = s ? s[f] = s[f] || {} : u, h = t.compile, (l = a.onBeforeStoreItem) && (h = l(c, e, o, h) || h), e ? o === null ? delete c[e] : c[e] = h ? o = h(e, o, s, n, t) : o : o = h(i, o), h && o && (o._is = n), (l = a.onStoreItem) && l(c, e, o, h), o } var f = n + "s"; r[f] = u; k[n] = t } function cr(n, t) { var i = this.jquery && (this[0] || h('Unknown template: "' + self.selector + '"')), r = i.getAttribute(et); return ui.call(r ? e[r] : e(i), n, t) } function ht(n, t, i) { if (o._dbgMode) try { return n.fn(t, i, r) } catch (u) { return h(u, i) } return n.fn(t, i, r) } function ui(n, t, i, r, f, e) { var o = this; return !r && o.fn._nvw && !u.isArray(n) ? ht(o, n, { tmpl: o }) : fi.call(o, n, t, i, r, f, e) } function fi(n, t, r, f, o, s) { var y, ut, g, a, nt, tt, it, p, v, rt, w, ft, h, et, c = this, k = ""; if (!!t === t && (r = t, t = i), o === !0 && (it = !0, o = 0), c.tag ? (p = c, c = c.tag, rt = c._, ft = c.tagName, h = rt.tmpl || p.tmpl, et = c.attr && c.attr !== b, t = l(t, c.ctx), v = p.content, p.props.link === !1 && (t = t || {}, t.link = !1), f = f || p.view, n = arguments.length ? n : f) : h = c, h && (!f && n && n._is === "view" && (f = n), f && (v = v || f.content, s = s || f._.onRender, n === f && (n = f.data), t = l(t, f.ctx)), f && f.data !== i || ((t = t || {}).root = n), h.fn || (h = e[h] || e(h)), h)) { if (s = (t && t.link) !== !1 && !et && s, w = s, s === !0 && (w = i, s = f._.onRender), t = h.helpers ? l(h.helpers, t) : t, u.isArray(n) && !r) for (a = it ? f : o !== i && f || new d(t, "array", f, n, h, o, v, s), y = 0, ut = n.length; y < ut; y++) g = n[y], nt = new d(t, "item", a, g, h, (o || 0) + y, v, s), tt = ht(h, g, nt), k += a._.onRender ? a._.onRender(tt, nt) : tt; else (f || !h.fn._nvw) && (a = it ? f : new d(t, ft || "data", f, n, h, o, v, s), rt && !c.flow && (a.tag = c)), k += ht(h, n, a); return w ? w(k, a) : k } return "" } function h(n, t, i) { var r = o.onError(n, t, i); if ("" + n === n) throw new a.Err(r); return !t.linkCtx && t.linked ? it.html(r) : r } function c(n) { h("Syntax error\n" + n) } function ct(n, t, i, r) { function k(t) { t -= f; t && h.push(n.substr(f, t).replace(ut, "\\n")) } function l(t) { t && c('Unmatched or missing tag: "{{/' + t + '}}" in template:\n' + n) } function d(e, o, v, y, p, d, nt, tt, it, rt, et, ot) { d && (p = ":", y = b); rt = rt || i; var st = (o || i) && [], ct = "", lt = "", at = "", vt = "", yt = "", pt = "", wt = "", ht = !rt && !p && !nt; v = v || (it = it || "#data", p); k(ot); f = ot + e.length; tt ? g && h.push(["*", "\n" + it.replace(vi, "$1") + "\n"]) : v ? (v === "else" && (wi.test(it) && c('for "{{else if expr}}" use "{{else expr}}"'), st = u[6], u[7] = n.substring(u[7], ot), u = s.pop(), h = u[2], ht = !0), it && si(it.replace(ut, " "), st, t, i).replace(pi, function (n, t, i, r, u, f, e, o) { return e ? (lt += f + ",", vt += "'" + o + "',") : i ? (at += r + f + ",", pt += r + "'" + o + "',") : t ? wt += f : (ct += r + f + ",", yt += r + "'" + o + "',", w = w || ft.test(u)), "" }).slice(0, -1), a = [v, y || !!r || w || "", ht && [], ei(vt, yt, pt), ei(lt, ct, at), wt, st || 0], h.push(a), ht && (s.push(u), u = a, u[7] = f)) : et && (l(et !== u[0] && u[0] !== "else" && et), u[7] = n.substring(u[7], ot), u = s.pop()); l(!u && et); h = u[2] } var o, a, w, g = t && t.allowCode, e = [], f = 0, s = [], h = e, u = [, , e]; return i && (n = p + n + v), l(s[0] && s[0][2].pop()[0]), n.replace(y, d), k(n.length), (f = e[e.length - 1]) && l("" + f !== f && +f[7] === f[7] && f[0]), i ? (o = lt(e, n, i), o.paths = e[0][6]) : o = lt(e, t), o._nvw && (o._nvw = !/[~#]/.test(n)), o } function ei(n, t, i) { return [n.slice(0, -1), t.slice(0, -1), i.slice(0, -1)] } function oi(n, t) { return "\n\t" + (t ? t + ":{" : "") + "args:[" + n[0] + "]" + (n[1] || !t ? ",\n\tprops:{" + n[1] + "}" : "") + (n[2] ? ",\n\tctx:{" + n[2] + "}" : "") } function si(n, t, i) { function p(p, b, k, d, g, nt, tt, it, rt, ut, ft, et, ot, st, ht, lt, at, vt, yt, pt) { function dt(n, i, r, f, e, s, h, c) { if (r && (t && (u === "linkTo" && (o = t._jsvto = t._jsvto || [], o.push(g)), (!u || l) && t.push(g.slice(i.length))), r !== ".")) { var a = (f ? 'view.hlp("' + f + '")' : e ? "view" : "data") + (c ? (s ? "." + s : f ? "" : e ? "" : "." + r) + (h || "") : (c = f ? "" : e ? s || "" : r, "")); return a = a + (c ? "." + c : ""), i + (a.slice(0, 9) === "view.data" ? a.slice(5) : a) } return n } nt = nt || ""; k = k || b || et; g = g || rt; ut = ut || at || ""; var bt, kt, wt; if (!tt || e || f) return t && lt && !e && !f && (!u || l || o) && (bt = y[r], pt.length - 1 > yt - bt && (bt = pt.slice(bt, yt + 1), lt = w + ":" + bt + s, wt = v[lt], wt || (v[lt] = 1, v[lt] = wt = ct(lt, i || t, !0), wt.paths.push({ _jsvOb: wt })), wt !== 1 && (o || t).push({ _jsvOb: wt }))), e ? (e = !ot, e ? p : '"') : f ? (f = !st, f ? p : '"') : (k ? (r++, y[r] = yt++, k) : "") + (vt ? r ? "" : (h = pt.slice(h, yt), u ? (u = l = o = !1, "\b") : "\b,") + h + (h = yt + p.length, "\b") : it ? (r && c(n), u = g, l = d, h = yt + p.length, g + ":") : g ? g.split("^").join(".").replace(li, dt) + (ut ? (a[++r] = !0, g.charAt(0) !== "." && (y[r] = yt), kt ? "" : ut) : nt) : nt ? nt : ht ? (a[r--] = !1, ht) + (ut ? (a[++r] = !0, ut) : "") : ft ? (a[r] || c(n), ",") : b ? "" : (e = ot, f = st, '"')); c(n) } var u, o, l, f, e, h = 0, v = i ? i.links : t && (t.links = t.links || {}), a = {}, y = { 0: -1 }, r = 0; return (n + (i ? " " : "")).replace(/\)\^/g, ").").replace(ai, p) } function lt(n, i, r) { var y, f, e, l, d, ht, ct, wt, at, g, rt, p, o, ft, et, v, nt, w, tt, vt, k, yt, pt, ot, s, a, st, h = 0, u = "", it = {}, bt = n.length; for ("" + i === i ? (v = r ? 'data-link="' + i.replace(ut, " ").slice(1, -1) + '"' : i, i = 0) : (v = i.tmplName || "unnamed", i.allowCode && (it.allowCode = !0), i.debug && (it.debug = !0), p = i.bnds, et = i.tmpls), y = 0; y < bt; y++) if (f = n[y], "" + f === f) u += '\n+"' + f + '"'; else if (e = f[0], e === "*") u += ";\n" + f[1] + "\nret=ret"; else { if (l = f[1], tt = f[2], d = oi(f[3], "params") + "}," + oi(ft = f[4]), a = f[5], vt = f[7], (pt = e === "else") || (h = 0, p && (o = f[6]) && (h = p.push(o))), (ot = e === ":") ? l && (e = l === b ? ">" : l + e) : (tt && (nt = ri(vt, it), nt.tmplName = v + "/" + e, lt(tt, nt), et.push(nt)), pt || (w = e, yt = u, u = ""), k = n[y + 1], k = k && k[0] === "else"), st = a ? ";\ntry{\nret+=" : "\n+", ot && (o || l && l !== b)) { if (s = "return {" + d + "};", a && (s = "try {\n" + s + "\n}catch(e){return {error: j._err(e,view," + a + ")}}\n"), s = new Function("data,view,j,u", " // " + v + " " + h + " " + e + "\n" + s), s.paths = o, s._tag = e, r) return s; rt = 1 } if (u += ot ? (r ? (a ? "\ntry{\n" : "") + "return " : st) + (rt ? (rt = 0, g = at = !0, 'c("' + l + '",view,' + (o ? (p[h - 1] = s, h) : "{" + d + "}") + ")") : e === ">" ? (ct = !0, "h(" + ft[0] + ")") : (wt = !0, "((v=" + ft[0] + ')!=null?v:"")')) : (g = ht = !0, "\n{view:view,tmpl:" + (tt ? et.length : "0") + "," + d + "},"), w && !k) { if (u = "[" + u.slice(0, -1) + "]", (r || o) && (u = new Function("data,view,j,u", " // " + v + " " + h + " " + w + "\nreturn " + u + ";"), o && ((p[h - 1] = u).paths = o), u._tag = e, r)) return u; u = yt + st + 't("' + w + '",view,this,' + (h || u) + ")"; o = 0; w = 0 } a && (g = !0, u += ";\n}catch(e){ret" + (r ? "urn " : "+=") + "j._err(e,view," + a + ");}\n" + (r ? "" : "ret=ret")) } u = "// " + v + "\nj=j||" + (t ? "jQuery." : "jsviews.") + "views;var v" + (ht ? ",t=j._tag" : "") + (at ? ",c=j._cnvt" : "") + (ct ? ",h=j.converters.html" : "") + (r ? ";\n" : ',ret=""\n') + (it.debug ? "debugger;" : "") + u + (r ? "\n" : ";\nreturn ret;"); try { u = new Function("data,view,j,u", u) } catch (kt) { c("Compiled template code:\n\n" + u + '\n: "' + kt.message + '"') } return i && (i.fn = u), g || (u._nvw = !0), u } function l(n, t) { return n && n !== t ? t ? f(f({}, t), n) : n : t && f({}, t) } function lr(n) { return pt[n] || (pt[n] = "&#" + n.charCodeAt(0) + ";") } function ar(n) { var i, t, r = []; if (typeof n == "object") for (i in n) t = n[i], t && t.toJSON && !t.toJSON() || tt(t) || r.push({ key: i, prop: n[i] }); return r } function ci(n) { return n != null ? ki.test(n) && ("" + n).replace(di, lr) || n : "" } if ((!t || !t.views) && !n.jsviews) { var u, rt, y, vt, yt, p = "{", w = "{", s = "}", v = "}", nt = "^", li = /^(!*?)(?:null|true|false|\d[\d.]*|([\w$]+|\.|~([\w$]+)|#(view|([\w$]+))?)([\w$.^]*?)(?:[.[^]([\w$]+)\]?)?)$/g, ai = /(\()(?=\s*\()|(?:([([])\s*)?(?:(\^?)(!*?[#~]?[\w$.^]+)?\s*((\+\+|--)|\+|-|&&|\|\||===|!==|==|!=|<=|>=|[<>%*:?\/]|(=))\s*|(!*?[#~]?[\w$.^]+)([([])?)|(,\s*)|(\(?)\\?(?:(')|("))|(?:\s*(([)\]])(?=\s*\.|\s*\^|\s*$)|[)\]])([([]?))|(\s+)/g, ut = /[ \t]*(\r\n|\n|\r)/g, vi = /\\(['"])/g, yi = /['"\\]/g, pi = /(?:\x08|^)(onerror:)?(?:(~?)(([\w$]+):)?([^\x08]+))\x08(,)?([^\x08]+)/gi, wi = /^if\s/, bi = /<(\w+)[>\s]/, ki = /[\x00`><\"'&]/, ft = /^on[A-Z]|^convert(Back)?$/, di = /[\x00`><"'&]/g, gi = 0, nr = 0, pt = { "&": "&amp;", "<": "&lt;", ">": "&gt;", "\x00": "&#0;", "'": "&#39;", '"': "&#34;", "`": "&#96;" }, b = "html", et = "data-jsv-tmpl", wt = {}, k = { template: { compile: ii }, tag: { compile: sr }, helper: {}, converter: {} }, r = { jsviews: "v1.0.0-beta", settings: function (n) { f(o, n); kt(o._dbgMode); o.jsv && o.jsv() }, sub: { View: d, Err: ot, tmplFn: ct, cvt: st, parse: si, extend: f, syntaxErr: c, DataMap: dt }, _cnvt: ur, _tag: er, _err: h }; (ot.prototype = new Error).constructor = ot; ni.depends = function () { return [this.get("item"), "index"] }; ti.depends = function () { return ["index"] }; d.prototype = { get: ir, getIndex: ti, getRsc: fr, hlp: rr, _is: "view" }; for (rt in k) hr(rt, k[rt]); var at, e = r.templates, it = r.converters, hi = r.helpers, g = r.tags, a = r.sub, o = r.settings; t ? (u = t, u.fn.render = cr, (at = u.observable) && (f(a, at.sub), delete at.sub)) : (u = n.jsviews = {}, u.isArray = Array && Array.isArray || function (n) { return Object.prototype.toString.call(n) === "[object Array]" }); u.render = wt; u.views = r; u.templates = e = r.templates; o({ debugMode: kt, delimiters: gt, onError: function (n, t, r) { return t && (n = r === i ? "{Error: " + n + "}" : tt(r) ? r(n, t) : r), n }, _dbgMode: !0 }); g({ "else": function () { }, "if": { render: function (n) { var t = this; return t.rendering.done || !n && (arguments.length || !t.tagCtx.index) ? "" : (t.rendering.done = !0, t.selected = t.tagCtx.index, t.tagCtx.render(t.tagCtx.view, !0)) }, onUpdate: function (n, t, i) { for (var r, f, u = 0; (r = this.tagCtxs[u]) && r.args.length; u++) if (r = r.args[0], f = !r != !i[u].args[0], !this.convert && !!r || f) return f; return !1 }, flow: !0 }, "for": { render: function (n) { var f, t = this, r = t.tagCtx, e = "", o = 0; return t.rendering.done || ((f = !arguments.length) && (n = r.view.data), n !== i && (e += r.render(n, f), o += u.isArray(n) ? n.length : 1), (t.rendering.done = o) && (t.selected = r.index)), e }, flow: !0, autoBind: !0 }, include: { flow: !0, autoBind: !0 }, "*": { render: bt, flow: !0 } }); g({ props: f(f({}, g["for"]), dt(ar)) }); g.props.autoBind = !0; it({ html: ci, attr: ci, url: function (n) { return n != i ? encodeURI("" + n) : n === null ? n : "" } }); gt() } })(this, this.jQuery);    
  </script>
</head>
<body>
  <div></div>
  <script id="tmpl" type="text/x-jsrender">
    {{:author}} wrote these books:<br/>
    {{for books}}
      book=<span style='display:inline-block;margin:0 5px;'>{{:#data}}{{:$value}}{{:data}}{{:value}}</span>
    {{/for}}
    <br/><br/>
  </script>
</body>
</html>
 
var data = [
  { author: "John", books: [ "j1","j2","j3" ]},
  { author: "Sarah", books: [ "s1","s2","s3" ]}
];
var tmpl = $.templates("#tmpl");
var html = tmpl.render(data);
$("div").html(html);
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
ianhdpro
0viewers