tmpl template javascript ajax jquery-templates script-tag

javascript - template - Etiqueta<script> dentro de la plantilla de jquery



jquery template html (5)

Backgroud:

Tengo esta plantilla que incluye videos de youtube que se cargan con swfobject.

Pregunta:

¿Hay alguna manera de incluir una etiqueta de script ...

<script type="text/javascript"> </script>

dentro de una plantilla de jQuery?

<script id="filaVideoTemplate" type="text/x-jQuery-tmpl"> <!-- Some HTML here --> <script type="text/javascript"> <!-- Some javascript here --> </script> </script>

Obviamente, no funciona directamente, ¿hay alguna manera de lograr lo mismo sin el script dentro de otro script?


La respuesta de Ronny Wang ofreció un buen lugar para comenzar mi problema. Sin embargo, su solución no funcionó para mí: las etiquetas .. en el cuerpo de la plantilla jQuery estaban causando problemas en mi página MVC3 Razor view.

Afortunadamente, me encontré con una solución (detalles @ https://github.com/jquery/jquery-tmpl/issues/94 ) que funciona y solo requiere un pequeño cambio. Aquí está la respuesta de Ronny, pero con una solución que debería ser compatible con MVC3:

<script id="filaVideoTemplate" type="text/x-jQuery-tmpl"> <!-- Some HTML here --> <scr{{= ""}}ipt type="text/javascript"> <!-- Some javascript here --> </scr{{= ""}}ipt> </script>

Parece que tanto la etiqueta de apertura como la de cierre solo necesitan separarse. ¡Espero que esto ayude!


No estoy seguro de si esta es la única forma, pero puede insertar el script como HTML sin formato para la plantilla:

<script id="filaVideoTemplate" type="text/x-jQuery-tmpl"> <!-- Some HTML here --> {{html innerScript}} </script>

Entonces:

var innerScript = ''<script type="text/javascript"><!-- Some javascript here --></script>''; $(''#filaVideoTemplate'').tmpl({innerScript: innerScript});


no estoy seguro de lo que está preguntando, pero puede usar la solicitud ajax y poner su plantilla dentro del archivo (js). my template_script.js el uso de ajax así:

$(''the element'').load(''template_script.js'').then( OK , fail ); function OK(){ do something if request was ok. } function fail(){ do something if request was not ok. }


<script id="filaVideoTemplate" type="text/x-jQuery-tmpl"> <!-- Some HTML here --> <script type="text/javascript"> <!-- Some javascript here --> {{html "</sc"+"ript>"}} </script>

Puede usar {{html "</ sc" + "ript>"}} replace </ script>


<script id="filaVideoTemplate" type="text/x-jQuery-tmpl"> <!-- Some HTML here --> </script> var data = [{ ''Id'': ''1'', ''Name'': ''a'' }, { ''Id'': ''2'', ''Name'': ''b'' }, { ''Id'': ''3'', ''Name'': ''c''}]; var renderedHtml = $(''<div />'').html($(''#filaVideoTemplate'').tmpl(data)).append((''<script type="text/javascript"><!-- Some javascript here --></endScript>'').replace(/endScript/g, ''script'')).html();

si los datos son únicos, no es correcto el código de una colección anterior. else (data is collection) la etiqueta del script utilizada para enlazar varias veces (data.length veces).