При переключении табов в баллоне кластера нужно каждый раз инициализировать слик слайдер, так как при переключении он ломался. Для этого был добавлен обработчик
objectManager.clusters.balloon.events.add(['click'], onBalloonEvent);
в обработчике мы проверяем произошол клик по новому неактивному табу или кликнули по тому табу что открыт, если кликнули по неактивному табу то ищем в DOM элемент в котором нужно запустить инизиализацию с slick слайдера.
function onBalloonEvent (e) {
if (activeObjectBalloon !== objectManager.clusters.balloon._collection.state._data.activeObject) {
setTimeout(() => {
$('.slider-map-photo').slick();
})
}
}
Полный код, фрагмента с обработчиками открытия объекта и кластера объектов на карте ниже
function onObjectEvent (e) {
var objectId = e.get('objectId');
setTimeout(() => {
if (e.get('type') == 'balloonopen') {
$('.slider-map-photo').slick();
} else if (e.get('type') == 'balloonclose') {
$('.slider-map-photo').slick('unslick');
}
}, 100);
}
function onClusterEvent (e) {
setTimeout(() => {
if (e.get('type') == 'balloonopen') {
$('.slider-map-photo').slick();
} else if (e.get('type') == 'balloonclose') {
$('.slider-map-photo').slick('unslick');
}
}, 100);
}
function onBalloonEvent (e) {
if (activeObjectBalloon !== objectManager.clusters.balloon._collection.state._data.activeObject) {
setTimeout(() => {
$('.slider-map-photo').slick();
})
}
}
objectManager.objects.events.add(['balloonopen', 'balloonclose'], onObjectEvent);
objectManager.clusters.events.add(['balloonopen', 'balloonclose', 'click'], onClusterEvent);
objectManager.clusters.balloon.events.add(['click'], onBalloonEvent);
Теги: Клик на clusterCaption в балуне кластера Яндекс-карты