Не работают js скрипты через renderAjax
Не работают js скрипты через renderAjax
Подскажите пожалуйста, отдаю View в модальное окно с помощью renderAjax, во view есть js скрипты, почему то они запускаются и работают только при первом запуске, при последующих запусках модального окна не работают, помещал даже простое console.log(), нет. Если обернуть в функцию, то ее можно вызывать с глобального js скрипта. Что тут происходит? Спасибо!
Re: Не работают js скрипты через renderAjax
вероятно потому что с серверва окно запрашивается один раз, т.е. "показ" окна - это запрос только в первый раз.
вообще это плохой стиль - слать js в аджакс ответе.
вообще это плохой стиль - слать js в аджакс ответе.
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Тем более что окажется что оно вам и не нужно было, странное это.
Re: Не работают js скрипты через renderAjax
Нет с сервера запрашивается это окно каждый раз и презаписывает модальное окно.
Где написано что это плохой стиль?
Вот как у меня сейчас. У меня в модальном окне vuejs компонент, содержащий много кода, мне его помещать в общий js? и чтоб он загружался постоянно. Может это модальное окно не буду вообще открывать. А если куча модальных окон...
Re: Не работают js скрипты через renderAjax
У вас проблема в коде. Хотите более точного ответа - сам код покажите (модаль, подгрузка данных, рендер JSа), или гадать предлагаете?
Re: Не работают js скрипты через renderAjax
-- Где написано что это плохой стиль?
много где.
но вы и сами убедились уже что - плохой. Не работает же ваш подход
-- У меня в модальном окне vuejs компонент, содержащий много кода
я аналогичной либой пользуюсь, riot.js
теги подгружаю - отдельно, если - не были загружены
вот и вы разделите:
действие Открывается модальное окно, вызывает
1 загрузку кода тега, js кода, и т.д. - если уже не было загружено
2 запрашивает данные для модального окна, если нужно
3 "собирает" модальное окно и открывает его
а если получать все вместе, и тег-компонент, и хтмл тогда и разбирайтесь как в vue инициализируется-регистрируется компонет, и почему он второй раз не бутстрапится.
то есть вопрос у вас получается не по Yii2, а по Vue
с тегами Riot не пробовал так, но думаю была бы та же история, ядро Riot увидя что такой тег уже него есть - второй раз бы его не инициализировало. Хотя да, можно вначале удалить этот тег из ядра. Вобщем тоже Yii2 был бы ни при чем.
насчет js - то просто есть опыт самодельных pajax. и тогда - те же jquery плагины приходилось дергать повторно. а иногда и лезть во внутренности, и добавлять свой init. потому что та же история - плагин проинициализировался, подцепился к DOM, и все.
перезатираем DOM - все что на него было понавешано в первый раз - надо повесить опять.
потому - плохой стиль. головная боль и баги, когда ты не контролируешь ситуацию, когда вставляешь в DOM html+js
много где.
но вы и сами убедились уже что - плохой. Не работает же ваш подход
-- У меня в модальном окне vuejs компонент, содержащий много кода
я аналогичной либой пользуюсь, riot.js
теги подгружаю - отдельно, если - не были загружены
вот и вы разделите:
действие Открывается модальное окно, вызывает
1 загрузку кода тега, js кода, и т.д. - если уже не было загружено
2 запрашивает данные для модального окна, если нужно
3 "собирает" модальное окно и открывает его
а если получать все вместе, и тег-компонент, и хтмл тогда и разбирайтесь как в vue инициализируется-регистрируется компонет, и почему он второй раз не бутстрапится.
то есть вопрос у вас получается не по Yii2, а по Vue
с тегами Riot не пробовал так, но думаю была бы та же история, ядро Riot увидя что такой тег уже него есть - второй раз бы его не инициализировало. Хотя да, можно вначале удалить этот тег из ядра. Вобщем тоже Yii2 был бы ни при чем.
насчет js - то просто есть опыт самодельных pajax. и тогда - те же jquery плагины приходилось дергать повторно. а иногда и лезть во внутренности, и добавлять свой init. потому что та же история - плагин проинициализировался, подцепился к DOM, и все.
перезатираем DOM - все что на него было понавешано в первый раз - надо повесить опять.
потому - плохой стиль. головная боль и баги, когда ты не контролируешь ситуацию, когда вставляешь в DOM html+js
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Тем более что окажется что оно вам и не нужно было, странное это.