JS внутри шаблона - PullRequest
1 голос
/ 26 мая 2010

Я пытаюсь включить некоторый код javascript в шаблон.

Код моей HTML-страницы:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <script type="text/javascript" src="jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="jquery-jtemplates.js"></script>
</head>

<body>
    <div id="infos"></div>
    <div id="my_template"></div>

    <script type="text/javascript">
        $(document).ready(function() {
            $('#my_template').setTemplateURL("my_template.html");
            try {
                $('#my_template').processTemplate({'var' : 1});
            }
            catch (e) {
                $('#infos').html('error : '+e);
            }
            $('#my_button').click(function(){
                alert('it works outside');
            });
        });
    </script>

</body>
</html>

и шаблон

content of the template<br/>
{#if $T.var == 1}

 <script type="text/javascript">
  $(document).ready(function() {

   $('#my_button').click(function(){
    alert('it works inside');
   });

  });
 </script>
 <input type='submit' id='my_button' value='click me' onclick='alert("direct");'/>

{#else}
 not working
{#/if}

выдает мне ошибку внутри infos balise

ошибка: ошибка синтаксиса: отсутствует} после тело функции

если я просто поместил alert('it works inside'); внутри script balise (удалите весь код, связанный с jquery), отобразится загрузка страницы, два сообщения «direct» и «оно работает снаружи», но не «оно работает внутри» сообщение.

Предполагается, что работает так, как сказано на странице документа

Разрешить использовать код JavaScript в шаблонах

Спасибо

Ответы [ 2 ]

1 голос
/ 27 мая 2010

Похоже, {} знаки искажены препроцессором шаблона. Я не знаком с jtemplate, но это может быть решением вашей проблемы: jTemplates escape {$

0 голосов
/ 27 мая 2010

Я нашел решение, я думаю.

Шаблон позволяет мне выполнять только очень простые JS внутри тегов <script>, но я могу либо вызвать функцию, определенную на моей главной странице, либо использовать внешний файл JS

content of the template<br/>
{#if $T.var == 1}
    <script type="text/javascript" src="fct_template.js"></script>
    <input type='submit' id='my_button' value='click me'/>
{#else}
    not working
{#/if}

где я могу поместить весь код, который я хочу

...