Не работают js скрипты через renderAjax

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
darlov
Сообщения: 204
Зарегистрирован: 2012.01.31, 16:09

Не работают js скрипты через renderAjax

Сообщение darlov »

Подскажите пожалуйста, отдаю View в модальное окно с помощью renderAjax, во view есть js скрипты, почему то они запускаются и работают только при первом запуске, при последующих запусках модального окна не работают, помещал даже простое console.log(), нет. Если обернуть в функцию, то ее можно вызывать с глобального js скрипта. Что тут происходит? Спасибо!

skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Не работают js скрипты через renderAjax

Сообщение skynin »

вероятно потому что с серверва окно запрашивается один раз, т.е. "показ" окна - это запрос только в первый раз.

вообще это плохой стиль - слать js в аджакс ответе.
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.

Аватара пользователя
darlov
Сообщения: 204
Зарегистрирован: 2012.01.31, 16:09

Re: Не работают js скрипты через renderAjax

Сообщение darlov »

skynin писал(а):
2018.05.21, 08:02
вероятно потому что с серверва окно запрашивается один раз, т.е. "показ" окна - это запрос только в первый раз.

вообще это плохой стиль - слать js в аджакс ответе.
Нет с сервера запрашивается это окно каждый раз и презаписывает модальное окно.

Где написано что это плохой стиль?
Вот как у меня сейчас. У меня в модальном окне vuejs компонент, содержащий много кода, мне его помещать в общий js? и чтоб он загружался постоянно. Может это модальное окно не буду вообще открывать. А если куча модальных окон...

Аватара пользователя
Alexum
Сообщения: 681
Зарегистрирован: 2016.09.26, 10:00

Re: Не работают js скрипты через renderAjax

Сообщение Alexum »

У вас проблема в коде. Хотите более точного ответа - сам код покажите (модаль, подгрузка данных, рендер JSа), или гадать предлагаете?

skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Не работают js скрипты через renderAjax

Сообщение skynin »

-- Где написано что это плохой стиль?
много где.
но вы и сами убедились уже что - плохой. Не работает же ваш подход :)

-- У меня в модальном окне vuejs компонент, содержащий много кода
я аналогичной либой пользуюсь, riot.js

теги подгружаю - отдельно, если - не были загружены

вот и вы разделите:
действие Открывается модальное окно, вызывает
1 загрузку кода тега, js кода, и т.д. - если уже не было загружено
2 запрашивает данные для модального окна, если нужно
3 "собирает" модальное окно и открывает его

а если получать все вместе, и тег-компонент, и хтмл тогда и разбирайтесь как в vue инициализируется-регистрируется компонет, и почему он второй раз не бутстрапится.
то есть вопрос у вас получается не по Yii2, а по Vue

с тегами Riot не пробовал так, но думаю была бы та же история, ядро Riot увидя что такой тег уже него есть - второй раз бы его не инициализировало. Хотя да, можно вначале удалить этот тег из ядра. Вобщем тоже Yii2 был бы ни при чем.

насчет js - то просто есть опыт самодельных pajax. и тогда - те же jquery плагины приходилось дергать повторно. а иногда и лезть во внутренности, и добавлять свой init. потому что та же история - плагин проинициализировался, подцепился к DOM, и все.
перезатираем DOM - все что на него было понавешано в первый раз - надо повесить опять.

потому - плохой стиль. головная боль и баги, когда ты не контролируешь ситуацию, когда вставляешь в DOM html+js
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.

Ответить