GridView, перестают работать скрипты после обновления

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Nicolai6120
Сообщения: 138
Зарегистрирован: 2014.08.13, 15:08

GridView, перестают работать скрипты после обновления

Сообщение Nicolai6120 » 2017.08.11, 16:08

Добрый день! После ajax update GridView отваливаются скрипты и css. К примеру, в фильтре повешен datepicker. Обновили грид - datepicker больше не работает. Есть afterAjaxUpdate, но я ж не смогу там подключить css и js файлы. Я оформил datepicker в виде виджета, но он не работает из-за этой проблемы вернее работает, но только для первой страницы грида, без фильтрации).

Аватара пользователя
Apache02
Сообщения: 50
Зарегистрирован: 2014.02.09, 01:14

Re: GridView, перестают работать скрипты после обновления

Сообщение Apache02 » 2017.08.14, 10:48

Для скриптов, если нужно повесить обработчик события, например "click", удобнее использовать "делегированные события":

Код: Выделить всё

// Вместо
$('.unique-selector').click(function (event) {
	//...
});

// использовать
$(document.body).on('click', '.unique-selector', function (event) {
	// ...
});
Наверное более правильно привязываться не к document.body а к контейнеру таблицы, но из-за того, что компонент на стороне клиента использует replaceWith к нему привязаться не получится. Можно конкретизировать селектор, включить в него id грида.

По поводу css я не понимаю проблемы. Если css правила были объявлены на странице заранее, то нет проблемы их использовать. При динамическом обновлении таблицы на странице меняется только контейнер таблицы со всем содержимым.

Ответить