Actualización: después de otro día de la excavación en este tema, he encontrado que la actual plantilla lib jQuery proporciona hay manera de hacer esto. this article describe un buen enfoque.¿La mejor manera de empaquetar varias plantillas de jQuery en una sola solicitud de xHttp?
Me gustaría saber de ideas adicionales sobre cómo hacer esto. El artículo vinculado anteriormente requiere que la cadena de plantillas devuelta sea insertada en el DOM. Parece que dejando el DOM fuera de esto sería ideal, y menos sobrecarga en el navegador . Imagine una página grande, con plantillas compuestas múltiples que pueden no ser utilizadas. Aunque, tal vez porque las plantillas están envueltas en una etiqueta de script , solo hay un elemento DOM por plantilla. Vamos, vamos a escuchar algunos pensamientos ...
Usando jQuery template libs, ¿cuál es la mejor manera de combinar múltiples, relacionados, relativamente pequeñas plantillas juntos? ¿Necesita una sola etiqueta <script>
para cada plantilla individual? ¿Qué tal en el caso de tirar dinámicamente estas plantillas a través de AJAX? ¿Puedo combinar estas plantillas de alguna manera?
considerar lo siguiente:
<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>
Ahora bien, porque estas dos plantillas están muy estrechamente relacionados (y una depende de la otra) que tendría sentido para consolidarlas en una sola llamada AJAX, y obtener los dos al una vez. Tengo algunas ideas, pero me gustaría saber si hay una forma común/mejor para hacer esto. Actualmente me tire en un trozo de HTML, y luego hacer un .find() para obtener el pedazo específico de HTML para una plantilla de ... ej:
var templatePackage = fancyAjaxCalltoGetTemplates();
"templatePackage" podría tener el siguiente aspecto:
<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>
entonces podría hacer:
var titleTemplate = jQuery.template('titleTemplate', $(templatePackage).find('#titleTemplate'));
y
var movieTemplate = jQuery.template('movieTemplate', $(templatePackage).find('#movieTemplate'));
... déjame saber lo que piensas ... ¿qué harías?
también podría usar un delimitador y dividir un grupo de plantillas de una sola respuesta. pero debe haber una forma más elegante de hacerlo con jquery/templates. ¿Me falta algo de la documentación de las plantillas? – user406905
Creo que te estoy siguiendo aquí ... ¿estás tratando de evitar el problema de tener que cargar TODA la plantilla (s) en tu página renderizada primero, y luego elegir solo las que necesitas? –
Eso es correcto. Necesito cargar dinámicamente plantillas según sea necesario. – user406905