Клуб API Карт

Динамический балун

Пост в архиве.

Добрый день.

 

Мне нужно по клику на placemark подгружать в балун какие-то данные, выводить их, и далее повесить обработчик на кнопку в этом балуне. Ну к примеру, есть какие-то точки продаж, кликаем по метке, подргрузили инфу, и сделали кнопку "удалить с карты".

Я видел у вас пример с подгрузкой через ajax. Данные у меня тоже подгружаются, но не получается повесить обработчик на клик.

 

Вот пример того как у меня все написано: http://pastebin.com/HejcMLxH

 

Но я не знаю как повесить клик на что-нибудь внутри балуна. Если балун один единственный на всю карту, и в него запихивать какую то верстку, скажем <a href=.. id="#test"> и выбирать по $('#test') то вроде норм метод. Но я попробовал после 

placemark.properties.set('balloonContentFooter', html);

 

вставить

 

$('a[data-type="removeDevice"]').on('click', function(event) {

...

}

 

и у меня только после того как второй раз открою балун начинает срабатывать обработчик  и вообще как-то все криво наверно 

 

Подскажите, пожалуйста)

 

10 комментариев
Александр Попов
27 января 2016, 23:58

А что, если наплевать на стайлгайды и сделать обычный onclick="func()" прямо в разметке балуна? А то когда вы вызываете on(), элемент должен существовать, иначе ничего не выйдет. А он не факт, что существует физически до открытия балуна как элемент DOM, тут уже зависит от внутренней логики карт.

Ну вот не хотелось onclick писать. Может можно как-то по-другому сделать?)

Владислав Турман
27 января 2016, 23:58

Пробовали так:

$('#map').on('click', 'a[data-type="removeDevice"]', function(event) {

вроде сработало, единственное что я же не буду его пихать при клике на плейсмарк, я вынес код в инициализацию, и потерял id который был у плейсмарка. Кароче говоря еще надо запихнуть айдишник чтоб знать что удалять с сервера, но в общем то сработало

 

 

Владислав Турман
27 января 2016, 23:58

Скажу сразу, это не самый лучший способ. Другой вариант вспоминается в клубе очень часто, но думаю у вас не очень нагруженный сайт и такой вариант подойдет ;)

А как тогда плейсмарк достать который нужно удалить?

Александр Попов
27 января 2016, 23:58

Повесьте тогда на открытие балуна, а не на инициализацию)

Навешивать обработчики событий на HTML содержимое балуна лучше в методе build макета балуна

http://ymapsapi.ya.ru/replies.xml?item_no=1876

Как-то все сложно прям)

Вариант шарИКа как-то попроще выглядит)

все, осилил. Единственно не понял почему в апи 2.1 работает и {{properties.name}} и $[properties.name], и не понял что такое

$[[options.contentLayout observeSize minWidth=235 maxWidth=235 maxHeight=350]]

 

а именно observeSize и вообще где описание этих всех параметров

 

Но работает, и в стиле бутстрапа даже все теперь :)