@yazux

Как подгрузить js файл при использовании pjax?

Работаю в yii2, сайт целиком крутится на pjax, на одной из страниц сайта использую js библиотеку SimpleAjaxUploader, соответственно, что писать подключение библиотеки в appAsset.php не логично т.к. она, в таком случае, будет подгружаться на всех страницах сайта. По этой причине использую следующий код в вью, нужной мне страницы:
<?php  Pjax::begin(['id' => 'w0']); ?>
<?php  $this->registerJsFile('http://myurl.loc/scripts/SimpleAjaxUploader.js', array('position' => $this::POS_END), 'jquery'); ?>
<?php  $this->registerJsFile('http://myurl.loc/scripts/imageUploader.js', array('position' => $this::POS_END), 'jquery'); ?>
/*далее разметка вьюхи и т.д.*/
<?php Pjax::end(); ?>


в файле "imageUploader.js" находится функция, которая работает с библиотекой SimpleAjaxUploader.js, используя конструкцию:
var uploader = new ss.SimpleUpload({/*параметры*/});
/*далее какие-то действия*/


Теперь суть проблемы: если я перехожу на эту страницу с какой-либо другой, т.е. вьюха загружается с помощью pjax, то получаю в консоли ошибку: "Uncaught TypeError: ss.SimpleUpload is not a function".
Если же обновить страницу или перейти на неё путём набора адреса в строке браузера, то вьюха загружается на прямую и все скрипты подключаются и соответственно ошибки нет и всё работает. Помогите разобраться с правильным подключением библиотеки при работе с pjax.
  • Вопрос задан
  • 422 просмотра
Пригласить эксперта
Ответы на вопрос 1
@matperez
Попробуйте вынести <?php $this->registerJsFile('myurl.loc/scripts/SimpleAjaxUploader.js', array('position' => $this::POS_END), 'jquery'); ?> за пределы контейнера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 10:55
2500 руб./за проект
01 мая 2024, в 10:55
3000 руб./за проект
01 мая 2024, в 10:55
3000 руб./за проект