Javascript источник в частичном представлении Symfony - PullRequest
1 голос
/ 01 февраля 2010

Я использую symfony 1.4, я написал фрагмент кода js для использования в шаблоне и хочу поместить его в отдельный файл JS, потому что я буду использовать его много раз в коде.

Я добавил JS в шаблон, используя:

<?php use_javascript('mi_js') ?>

В этом шаблоне есть несколько вызовов ajax, которые обновляют зоны представления с помощью метода renderPartial. Эти новые зоны также используют код JS, поэтому мне нужно добавить этот код в частичном представлении. Но если добавить:

<?php use_javascript('mi_js') ?>

в частичном, то не работает. Чтобы получить эту работу, я должен поместить весь код JS в частичное, например:

<script type="text/javascript">/*<![CDATA[*/

$('.mi_class').click(function() {

 var a = $(this).parent();
...

Как я уже сказал, я не хочу этого делать.

Есть идеи, что я могу сделать? Любой шаблонный метод для этого?

Заранее спасибо. Алехандро Г.

Ответы [ 3 ]

1 голос
/ 01 февраля 2010

Причина, по которой вы должны поместить код в частичное, заключается в следующем:

Когда вы используете use_javascript('mi_js'), JS-файл (путь к) добавляется к объекту sfResponse. Затем, когда шаблоны визуализируются, все файлы JS включаются в файл макета с помощью get_javascripts().

Но теперь, когда вы только визуализируете партиал и отправляете результаты обратно через Ajax, файлы JS получают , а не в комплекте.

Я предлагаю поместить ваш код в функцию и добавить его в заголовок вашего HTML-файла. Тогда в частичках звоните:

<script type="text/javascript">/*<![CDATA[*/

$('.mi_class').click(the_new_function())

(возможно, вам нужно определить параметры, я не знаю).

0 голосов
/ 05 февраля 2010

Как насчет добавления файла JS обычным способом к родительской странице, которая использует частичное, а не само частичное.

Если частичное вызывается во многих местах, я бы просто добавил его в файл view.yml приложения или модулей.

0 голосов
/ 01 февраля 2010

Вы можете присоединить обработчики событий к будущим элементам DOM с помощью метода jQuery live(). Другой способ - привязать обработчики непосредственно после загрузки вашей части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...