2015-05-31 3 views
-4

Я работаю над проектом Symfony2, и я хочу вызвать функцию JavaScript и передать массив объектов JSON (который я получаю с контроллера) из Twig.Вызов функции JavaScript от Twig

Но первый, очень простой тест уже не удалось, как:

main.js:

function helloWorld(name) { 
    console.log("hello " + name); 
} 

связаны с main.js в прут и называется функцией:

<body> 
    <script>helloWorld("world!")</script> 

    {% block javascripts %} 
     <script src="{{ asset('js/main.js') }}"></script> 
    {% endblock %} 
</body> 

, в результате чего имеется ссылкаError:

"Uncaught ReferenceError: helloWorld is not defined"

Что мне нужно сделать по-другому, чтобы сделать эту работу?

EDIT: Спасибо двум, которые нашли время, чтобы ответить. Описанная веточка на самом деле состоит из кучки вложенных веток, а размещение javascript include основано на Symfony documentation, предполагая, что именно поэтому я не видел очевидного. Если обнаружили неполадку себя, когда формулируя вопрос, хотя ....

ответ

6

Обратить порядок функций:

<body> 
{% block javascripts %} 
    <script src="{{ asset('js/main.js') }}"></script> 
{% endblock %} 

<script>helloWorld("world!")</script> 
</body> 
3

Сценарий с определением helloWorld определения ставится после функция выполняется. Это означает, что JavaScript еще не знает эту функцию и вызывает эту ошибку.

Решение: Поместите свой javascript под своим импортом (до </body>, например, в блок javascripts) или поставьте импорт до javascript страницы (например, в голове).

Смежные вопросы