Autoría | Ultima modificación | Ver Log |
<!DOCTYPE html><html><head><script src="http://code.jquery.com/jquery-3.5.1.js" type="text/javascript"></script><script src="../../jsrender.js" type="text/javascript"></script><link href="../resources/demos.css" rel="stylesheet" type="text/css" /><link href="../resources/movielist.css" rel="stylesheet" type="text/css" /></head><body><a href="../demos.html">JsRender Demos</a><br /><h3>Template context: Passing in additional helpers to a render() call</h3><div class="subhead">Passing in contextual variables or helper functions, using the helpersOrContext parameter of <em>...render( data, helpersOrContext );</em></div><pre>$( selector ).render( data, {reverseSort: reverse,format: myFormatFunction,buttonCaption: function(val) {...}})</pre><div class="subhead">Use <em>~name</em> to access context variables or helpers by name - whether passed in with options,</div><div class="subhead">registered globally as helpers, or registered as helpers for a specific template.</div><pre><th><button>{{>~buttonCaption('sort')}}</button></th>...<td>{{>~format(title)}}</td>...<td>{{sort languages reverse=~reverseSort}}...{{/sort}}</td></pre><!--================ Demo ================--><script id="movieTemplate" type="text/x-jsrender"><thead><tr><th>Title <button id="formatBtn">{{>~buttonCaption('case')}}</button></th><th><button id="sortBtn">{{>~buttonCaption('sort')}}</button></th></tr></thead><tbody>{{for #data}}<tr><td>{{>~format(title)}}</td><td>{{sort languages reverse=~reverseSort}}<div><b>{{>name}}</b></div>{{/sort}}</td></tr>{{/for}}</tbody></script><table id="movieList"></table><br /><script type="text/javascript">$.views.tags({// Tag to reverse-sort an arraysort: function( array ){var ret = "";if ( this.tagCtx.props.reverse ) {// Render in reverse orderfor ( var i = array.length; i; i-- ) {ret += this.tagCtx.render( array[ i - 1 ] );}} else {// Render in original orderret += this.tagCtx.render( array );}return ret;}});var reverse = false,upperCase = false,movies = [{title: "Meet Joe Black",languages: [{ name: "English" },{ name: "French" }]},{title: "Eyes Wide Shut",languages: [{ name: "French" },{ name: "German" },{ name: "Spanish" }]}];function myFormatFunction(value) {return upperCase ? value.toUpperCase() : value.toLowerCase();}$("#movieList").on("click", "#sortBtn", function(){reverse = !reverse;renderList();}).on("click", "#formatBtn", function(){upperCase = !upperCase;renderList();});function renderList() {$( "#movieList" ).html($( "#movieTemplate" ).render( [movies], {reverseSort: reverse,format: myFormatFunction,buttonCaption: function(val) {if (val === 'sort') {return reverse ? "Sort increasing" : "Sort decreasing";}return upperCase ? "to lower" : "to upper";}}));}renderList();</script></body></html>