Почему не работает Intercooler после Ajax запроса?

286
11 февраля 2017, 09:16

Речь об этой библиотеке. Подключил ее. Теперь если на странице разместить этот код ссылки:

<a ic-post-to="/click">Link</a>

То он превратиться в это:

<a ic-post-to="/click" ic-src="/click" ic-verb="POST" ic-trigger-on="default" ic-deps="ignore" ic-id="7">Link</a>

Новые атрибуты - это нам говорит о том, что библиотека работает.

Теперь к сути вопроса. Похожая ссылка есть в HTML коде, который динамически подгружается на страницу. И суть в том, что в итоге в исходном коде страницы размещается точно такой же html код ссылки, что я и передаю из back-end'а. То есть вот эти все атрибуты в ссылке, которые подставляет библиотека для своей работы - их нет. Библиотека не работает. Да и по нажатии на ссылку ничего не уходит.

То есть, если говорить вкратце, то библиотека не инициализируется в этот момент.

Как исправить? Помогите, пожалуйста.

Answer 1

Ну звучит достаточно просто - вам надо заного вызвать intercoolerjs чтобы он прошелся по html и заменил нужные блоки своими. Обычно это делают с помощью callback после ajax реквеста (который вернет вам еще не обработанный intercoolerjs html). Наверняка у этой либы есть метод, который запускает ее обработчик для определенного куска кода (сам не работал с ней, но по схожему принципу работают и другие либы-парсеры).

Это может быть запрос Intercooler.refresh(eltOrPath) или Intercooler.processNodes(elt) (intercoolerjs.org/docs.html).

По сути, после Ajax ты добавляешь новый HTML к существующему в какой-либо контейнер. Потом (желательно если контейнер будет с id или хотябы с class) этот контейнер ты передаешь на вход этим функциям от интеркулера (т.к. он наследован от JQuery, то можно сразу искать с помощью селекторов типа ".class")

READ ALSO
Как закрыть уже открытое меню бутстрапа, если пользователь открыл другое меню?

Как закрыть уже открытое меню бутстрапа, если пользователь открыл другое меню?

Добрый день, У меня адаптивный сайт работающий с BootstrapВ мобильной версии оба моих меню сворачивается в свой гамбургер

226
Html.Kendo().MaskedTextBox() маска русские буквы

Html.Kendo().MaskedTextBox() маска русские буквы

Необходимо создать маску ввода только для русских символов + пробел + точка + запятаяНикак не пойму как указать что именно русские буквы

259
Как перезапускать slick slider при ресайзе?

Как перезапускать slick slider при ресайзе?

Привет! Использую slick slider, у него есть свойство rows, которое необходимо на одном разрешенииВ итоге когда начинает работать это свойство, слик...

1505
Как исправить баг с play pause HTML5 в google chrome?

Как исправить баг с play pause HTML5 в google chrome?

При разработке радиоприёмника столкнулся с проблемой в google chromeИменно в chrome, что самое поразительное, в остальных браузерах всё работает...

374