<script> тег внутри шаблона jquery - PullRequest
22 голосов
/ 25 января 2011

Backgroud:

У меня есть этот шаблон, который включает видео с YouTube, загружаемые с swfobject.

Вопрос:

Есть ли способ включить тег сценария ...

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

внутри шаблона jQuery ??

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

Очевидно, что это не работает напрямую, есть ли способ достичь того же самого без сценария внутри другого сценария?

Ответы [ 5 ]

24 голосов
/ 28 марта 2011
<script id="filaVideoTemplate" type="text/x-jQuery-tmpl">
    <!-- Some HTML here -->
    <script type="text/javascript">
        <!-- Some javascript here -->
    {{html "</sc"+"ript>"}}
</script>

Вы можете использовать {{html ""}} заменить

4 голосов
/ 25 января 2011

Не уверен, что это единственный способ, но вы можете вставить скрипт как необработанный HTML для шаблона:

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

Тогда:

var innerScript = '<script type="text/javascript"><!-- Some javascript here --></script>';
$('#filaVideoTemplate').tmpl({innerScript: innerScript});
0 голосов
/ 18 мая 2016

не уверен, что вы спрашиваете, но: Вы можете использовать ajax-запрос и поместить свой шаблон в файл (js). мой template_script.js использует ajax так:

$('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.
}
0 голосов
/ 20 июня 2012
<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();

, если данные единичные, а вышеприведенный код не верен.else (data is collection) тег сценария, используемый для многократного связывания (data.length times).

0 голосов
/ 30 мая 2012

Ответ Ронни Вана дал хорошее начало для моей проблемы.Однако его решение не сработало - теги .. в теле шаблона jQuery вызывали проблемы на моей странице просмотра MVC3 Razor.

К счастью, я наткнулся на решение (подробности @ https://github.com/jquery/jquery-tmpl/issues/94), которое работает и требует лишь незначительного изменения.Вот ответ Ронни, но с исправлением, которое должно сделать его совместимым с MVC3:

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

Похоже, что открывающий и закрывающий тег просто необходимо разбитьНадеюсь, это поможет!

...