Update: nach einem weiteren Tag der in diese Frage zu graben, ich habe festgestellt, dass die aktuelle jQuery-Vorlage lib keine Möglichkeit bietet, dies zu tun. this article beschreibt einen guten Ansatz.Beste Möglichkeit, mehrere jQuery-Vorlagen in einem einzigen xHttpRequest zu packen?
Ich würde noch gerne von irgendwelchen zusätzliche Gedanken dazu hören, dies zu tun. Der Artikel, der oben verknüpft wird, erfordert, dass die zurückgegebene Zeichenfolge von Vorlagen in dem DOM eingefügt wird. Scheint so, als ob das DOM hieraus verlassen würde, wäre ideal, und weniger Overhead auf dem Browser. Stellen Sie sich eine große Seite vor, mit mehrere zusammengesetzte Vorlagen, die nicht verwendet werden können. Obwohl, vielleicht weil die Vorlagen in einem Skript Tag umschlossen sind, gibt es nur ein einzelnes DOM-Element pro Vorlage? Kommen Sie, lassen Sie uns einige Gedanken hören ...
jQuery template libs benutzen, was ist der beste Weg, um mehrere, verwandte, relativ kleine Vorlagen miteinander zu kombinieren? Benötigen Sie für jede einzelne Vorlage einen einzelnen <script>
-Tag? Was ist, wenn Sie diese Vorlagen dynamisch über AJAX ziehen? Kann ich diese Vorlagen irgendwie kombinieren?
Beachten Sie Folgendes:
<script id="movieTemplate" type="text/x-jquery-tmpl">
{{tmpl "#titleTemplate"}}
<tr class="detail"><td>Director: ${Director}</td></tr>
</script>
<script id="titleTemplate" type="text/x-jquery-tmpl">
<tr class="title"><td>${Name}</td></tr>
</script>
Nun, da diese beiden Vorlagen sind sehr eng miteinander verwandt (und man hängt von der anderen Seite) wäre es sinnvoll, diese in einem einzigen AJAX-Aufruf zu konsolidieren, und bekommen sie beide Einmal. Ich habe ein paar Ideen, aber ich würde gerne wissen, ob es einen gemeinsamen/besten Weg gibt, dies zu tun? Zur Zeit ziehe ich in einem Stück von HTML, und dann einen .find tun() die spezifische peice von HTML für eine Vorlage zu erhalten ... zB:
var templatePackage = fancyAjaxCalltoGetTemplates();
„templatePackage“ dann könnte wie folgt aussehen:
<div id="templatePkg">
<div id="movieTemplate">
{{tmpl "#titleTemplate"}}
<tr class="detail"><td>Director: ${Director}</td></tr>
</div>
<div id="titleTemplate">
<tr class="title"><td>${Name}</td></tr>
</div>
</div>
dann könnte ich tun:
var titleTemplate = jQuery.template('titleTemplate', $(templatePackage).find('#titleTemplate'));
und
var movieTemplate = jQuery.template('movieTemplate', $(templatePackage).find('#movieTemplate'));
... lass mich wissen, was du denkst ... was würdest du tun?
Ich könnte auch ein Trennzeichen verwenden und eine Gruppe von Vorlagen aus einer einzigen Antwort aufteilen. aber es muss einen eleganteren Weg geben, dies mit jquery/templates zu tun - fehle ich etwas aus der Templates-Dokumentation? – user406905
I _think_ Ich folge dir hier ... versuchst du nur das Problem zu umgehen, ALLE Vorlagen zuerst auf deine gerenderte Seite zu laden, dann nur die wenigen auszuwählen, die du brauchst? –
Das ist richtig. Ich muss Vorlagen nach Bedarf dynamisch laden. – user406905