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" /><style>pre { font-size:10pt; font-weight:bold; }</style></head><body><a href="../demos.html">JsRender Demos</a><br /><h3>Example Scenario: Accessing parent data.</h3><!---------------------- First Example ----------------------><div class="subhead">Stepping up through the views (tree of nested rendered templates)</div><pre>var model = {specialMessage: function(...) { ... },theater: "Rialto",movies: [ ... ]}{{for movies}}<tr><td>'{{>title}}': showing at the '{{>#parent.parent.data.theater}}'</td></pre><table><thead><tr><th>Title</th><th>Languages (+specialMessage)</th></tr></thead><tbody id="movieList1"></tbody></table><!---------------------- Second Example ----------------------><div class="subhead">Setting contextual template parameters, accessible in all nested contexts as <em>~nameOfParameter</em>:</div><pre>{{for movies ~theater=theater}}<tr><td>'{{>title}}': showing at the '{{>~theater}}'</td></pre><table><thead><tr><th>Title</th><th>Languages (+specialMessage)</th></tr></thead><tbody id="movieList2"></tbody></table><!---------------------- Third Example ----------------------><div class="subhead">Using the top-level data, accessible in all nested contexts as <em>~root</em>:</div><pre>{{for movies}}<tr><td>'{{>title}}': showing at the '{{>~root.theater}}'</td></pre><table><thead><tr><th>Title</th><th>Languages (+specialMessage)</th></tr></thead><tbody id="movieList3"></tbody></table><!--=================== Demo ===================--><!------------------ Templates ------------------><script id="movieTemplate1" type="text/x-jsrender">{{for movies}}<tr><td>'{{>title}}': showing at the '{{>#parent.parent.data.theater}}'</td><td>{{if languages}}{{for languages}}{{>#data}}{{>#parent.parent.parent.parent.parent.data.specialMessage(#data, #parent.parent.data.title)}}<br/>{{/for}}{{/if}}</td></tr>{{/for}}</script><script id="movieTemplate2" type="text/x-jsrender">{{for movies ~theater=theater ~specialMessage=specialMessage}}<tr><td>'{{>title}}': showing at the '{{>~theater}}'</td><td>{{for languages ~title=title}}{{>#data}}{{>~specialMessage(#data, ~title)}}<br/>{{/for}}</td></tr>{{/for}}</script><script id="movieTemplate3" type="text/x-jsrender">{{for movies}}<tr><td>'{{>title}}': showing at the '{{>~root.theater}}'</td><td>{{for languages ~title=title}}{{>#data}}{{>~root.specialMessage(#data, ~title)}}<br/>{{/for}}</td></tr>{{/for}}</script><!------------------ Script ------------------><script type="text/javascript">var model = {specialMessage: function(language, title) {if (language === "French" && title === "City Hunter") { return ": (special offer)"; }},theater: "Rialto",movies: [{title: "Meet Joe Black",languages: ["English","French"]},{title: "City Hunter",languages: ["Mandarin","French","Chinese"]}]};$( "#movieList1" ).html($( "#movieTemplate1" ).render( model ));$( "#movieList2" ).html($( "#movieTemplate2" ).render( model ));$( "#movieList3" ).html($( "#movieTemplate3" ).render( model ));</script></body></html>