<!DOCTYPE html> <html> <head> <script type="text/javascript" src="scripts/jquery.js"></script> <script type="text/javascript" src="scripts/jquery-ui.js"></script> <script type="text/javascript" src="scripts/jsrender.js"></script> <link href="scripts/demos.css" rel="stylesheet" /> <link href="scripts/movielist.css" rel="stylesheet" /> <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> <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> <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> <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>
原文:http://www.cnblogs.com/alphafly/p/3888350.html