Render.js examples
All examples are in coffee script. If everything else fails, covert here http://js2coffee.org/
template: """ <H3>URL bind</H3> <input bind='link' /><button class='btn'>Submit</button> <div if='link'>URL here</div><div if='! link'>NO URL</div></div>"""
template: """ <H3>URL bind</H3> <input bind='link' /><button class='btn' bind="btn">Submit</button>""" onchange: -> return @node.btn.disable 'Link is req' unless @data.link return @node.btn.disable 'At least 5 chrs' if @data.link.length < 5 @node.btn.enable 'Submit'
template: """ <H3>Timer in ms</H3> <div><button bind="start">Start</button><button bind="stop">Stop</button></div> <div bind="time"></div> """ start_timer: -> @_timer = setInterval => @node.time.html (new Date()).getTime() @node.start.disable() @node.stop.enable() , 100 once: -> @start_timer() bind: start:-> @start_timer() stop: (node)-> clearInterval @_timer @node.start.enable() @node.stop.disable()
template: """ <h3>To to (<span bind="count"></span>)</h3> <form bind="add_todo"> <input bind="todo" /> </form> <ul bind="out"></ul> """ data: list:['buy milk'] bind: add_todo: -> return unless @data.todo @data.list.push @data.todo @data.todo = '' onchange: -> ret = [] for el in @data.list ret.push "<li>#{el}</li>" @data.out = ret.join("\n") @data.count = @data.list.length
script: 'https://raw.github.com/evilstreak/markdown-js/master/lib/markdown.js' template: """ <h3>Markdown data</h3> <textarea bind="md_data" style="width:96%; height:100px;"></textarea> <h4>Preview</h4> <div bind="md_prev" style="background:#eee;padding:5px;"></div> """ onchange: -> @node.md_prev.html = markdown.toHTML(@data.md_data)
Call in any way
$(node).render(opts, data)
Render.to(node, opts, data)
You can use inline templates
<div id="inline"> <H3>URL bind</H3> <form bind="hclick"> <input bind='link' /> <button class='btn'>Submit</button> </form> </div> <script> $('#inline').render(opts) </script>
Options
$(node).render(opts, data) --- node: '#node' || [DOM object] || [jQuery object] data: {} opts: template #data : takes .html() /ajax.html : $.get and render f(data) {} : execute() and render <div>blah</div> : raw data script: [scripts to preload] bind: el_on_state_change:(node, value) -> function data data: { el1:1, el2:2, ... }
Default binds
button - onclick form - onsubmit input[type=text] - onkeyup input[type=checkbox] - onclick
Methods
# Render in element Render.to(node, opts, data) # Replad render part Render.refresh(any_dom_or_jQuery_node_inside_part)