Das dynamische Anfordern von Daten zum Aktualisieren der Seite ist heutzutage eine sehr verbreitete Methode, wie z. B. das dynamische Laden von Blog-Kommentaren durch Paging, das rollierende Laden und das geplante Laden von Anfragen von Weibo usw.
In diesen Fällen handelt es sich bei den von der dynamischen Anfrage zurückgegebenen Daten normalerweise um assembliertes HTML, JSON oder XML. Kurz gesagt, die Daten werden nicht auf der Browserseite, sondern auf der Serverseite assembliert. Allerdings ist die Rückgabe von HTML hinsichtlich des Übertragungsvolumens nicht kosteneffektiv, und bei Webübertragungen wird JSON mittlerweile häufiger verwendet als XML.
Ein sehr problematischer Teil der Browser-basierten HTML-Generierung besteht darin, dass es in Ordnung ist, wenn die Struktur nicht komplex ist, aber sobald die Struktur komplex ist, wird es zu einem Albtraum. Sie müssen sehr vorsichtig sein etwas zu schreiben, das fast unmöglich zu warten ist.
Daher sind nacheinander einige Frameworks erschienen, die Vorlagen zum Generieren von HTML verwenden. Eines davon ist die Verwendung von jquery.tmpl.
Das Folgende konzentriert sich auf die Verwendung:
Lassen Sie uns zunächst Vorlagen und Daten vorstellen. Diese beiden sind auf jeden Fall unverzichtbar.
Es gibt zwei Möglichkeiten, Vorlagen zu definieren.
var markup = "<li>Some content: ${item}.<br/>" + " More content: ${myValue}.</li>"; $.template( "movieTemplate", markup );
<script id="movieTemplate" type="text/x-jquery-tmpl"> <li><b>${Name}</b> (${ReleaseYear})</li> </script>
Auf diese Weise werden zwei Vorlagen definiert, die erste ist in Skript geschrieben und die zweite ist in HTML geschrieben
Die Daten sind JSON
Folgendes beginnt mit dem Rendern der Vorlage
$( "#movieTemplate" ).tmpl( movies ).appendTo( "#movieList" ); $.tmpl( "movieTemplate", movies ).appendTo( "#movieList" );
Hinweis: movies ist ein JSON-Datenarray
var movies = [ { Name: "The Red Violin", ReleaseYear: "1998" }, { Name: "Eyes Wide Shut", ReleaseYear: "1999" }, { Name: "The Inheritance", ReleaseYear: "1976" } ];
Mehrere häufige Tags von jquery.tmpl sind:
${}, {{each}}, {{if }}, {{else}}, {{html}}
Ungewöhnliche Tags
{{=}},{{tmpl }} und {{wrap}}.
${} entspricht {{=}} und ist eine Ausgabevariable. Ausdrücke können auch in ${} platziert werden (zwischen = und muss ein Leerzeichen stehen die Variable, sonst ist sie ungültig)
Beispiel:
<div id="div_demo"> </div> <script id="demo" type="text/x-jquery-tmpl"> <div style="margin-bottom:10px;"> <span>${ID}</span> <span style="margin-left:10px;">{{= Name}}</span> <span style="margin-left:10px;">${Number(Num)+1}</span> <span style="margin-left:10px;">${Status}</span> </div> </script> <script type="text/javascript"> var users = [{ ID: 'think8848', Name: 'Joseph Chan', Num: '1', Status: 1 }, { ID: 'aCloud', Name: 'Mary Cheung', Num: '2'}]; $("#demo").tmpl(users).appendTo('#div_demo'); </script>
{{each}} stellt Schleifenlogik bereit, $value greift auf die Iterationsvariable zu und Sie können die Iterationsvariable auch anpassen ( i, Wert)
Beispiel:
<div id="div_each"> </div> <script id="each" type="text/x-jquery-tmpl"> <h3>users</h3> {{each(i,user) users}} <div>${i+1}:{{= user.name}}</div> {{if i==0}} <h4>group</h4> {{each(j,group) groups}} <div>${group.name}</div> {{/each}} {{/if}} {{/each}} <h3>depart</h3> {{each departs}} <div>{{= $value.name}}</div> {{/each}} </script> <script type="text/javascript"> var eachData = { users: [{ name: 'jerry' }, { name: 'john'}], groups: [{ name: 'mingdao' }, { name: 'meihua' }, { name: 'test'}], departs: [{ name: 'IT'}] }; $("#each").tmpl(eachData).appendTo('#div_each'); </script>
{{ if }} {{else}} stellt die Verzweigungslogik {{else}} bereit, die äquivalent zu else if
<🎜 ist > Beispiel:<div id="div_ifelse"></div> <script id="ifelse" type="text/x-jquery-tmpl"> <div style="margin-bottom:10px;"><span>${ID}</span><span style="margin-left:10px;">{{= Name}}</span> {{if Status}} <span>Status${Status}</span> {{else App}} <span>App${App}</span> {{else}} <span>None</span> {{/if}} </div> </script> <script type="text/javascript"> var users = [{ ID: 'think8848', Name: 'Joseph Chan', Status: 1, App: 0 }, { ID: 'aCloud', Name: 'Mary Cheung', App: 1 }, { ID: 'bMingdao', Name: 'Jerry Jin'}]; $("#ifelse").tmpl(users).appendTo('#div_ifelse'); </script>
<div id="div_html"></div> <script id="html" type="text/x-jquery-tmpl"> <div style="margin-bottom:10px;"> <span>${ID}</span> <span style="margin-left:10px;">{{= Name}}</span> ${html} {{html html}} </div> </script> <script type="text/javascript"> var user = { ID: 'think8848', Name: 'Joseph Chan', html: '<button>html</button>' }; $("#html").tmpl(user).appendTo('#div_html'); </script>
<div id="tmpl"></div> <script id="tmpl1" type="text/x-jquery-tmpl"> <div style="margin-bottom:10px;"> <span>${ID}</span> <span style="margin-left:10px;">{{tmpl($data) '#tmpl2'}}</span> </div> </script> <script id="tmpl2" type="type/x-jquery-tmpl"> {{each Name}}${$value} {{/each}} </script> <script type="text/javascript"> var users = [{ ID: 'think8848', Name: ['Joseph', 'Chan'] }, { ID: 'aCloud', Name: ['Mary', 'Cheung']}]; $("#tmpl1").tmpl(users).appendTo('#tmpl'); </script>
<div id="wrapDemo"> </div> <script id="myTmpl" type="text/x-jquery-tmpl"> The following wraps and reorders some HTML content: {{wrap "#tableWrapper"}} <h3>One</h3> <div> First <b>content</b> </div> <h3>Two</h3> <div> And <em>more</em> <b>content</b>... </div> {{/wrap}} </script> <script id="tableWrapper" type="text/x-jquery-tmpl"> <table cellspacing="0" cellpadding="3" border="1"><tbody> <tr> {{each $item.html("h3", true)}} <td> ${$value} </td> {{/each}} </tr> <tr> {{each $item.html("div")}} <td> {{html $value}} </td> {{/each}} </tr> </tbody></table> </script> <script type="text/javascript"> $(function () { $('#myTmpl').tmpl().appendTo('#wrapDemo'); }); </script>
<div id="div_item_data"></div> <script id="item_data" type="text/x-jquery-tmpl"> <div style="margin-bottom:10px;"> <span>${$data.ID}</span> <span style="margin-left:10px;">${$item.getName(" ")}</span> </div> </script> <script type="text/javascript"> var users = [{ ID: 'think8848', Name: ['Joseph', 'Chan'] }, { ID: 'aCloud', Name: ['Mary', 'Cheung']}]; $("#item_data").tmpl(users, { getName: function (spr) { return this.data.Name.join(spr); } }).appendTo('#div_item_data'); </script>
aus dem gerenderten Element < abrufen 🎜>
<script type="text/javascript"> $('#demo').delegate('div', 'click', function () { var item = $.tmplItem(this); alert(item.data.Name); }); </script>
Für eine detailliertere Verwendung des Frameworks jquery.tmpl, das Vorlagen zum Generieren von HTML verwendet, beachten Sie bitte die chinesische PHP-Website!