Клуб API Карт

Динамическая загрузка содержимого балуна

MisterLibra
14 июля 2016, 09:52

Здравствуйте.

Есть стилизованный под сайт ContentLayout для балуна, который создается с помощью ymaps.templateLayoutFactory.createClass(). Этот ContentLayout устанавливается при создании Placemark. Все хорошо, работает - балун всплывает с нужной информацией.

Теперь возникла задача подгружать данные балуна с сервера в момент открытия балуна. За основу я взял balloon_ajax из песочницы. Но возникли проблемы:

1) Не получается сменить ContentLayout балуна после загрузки данных и непонятно - возможно ли это вообще. Т.е. вообще есть два пути, на мой взгляд: или a) отображать надпись "Загрузка данных..." в balloonContent и после загрузки менять ContentLayout балуна с передачей загруженных данных, или b) надпись "Загрузка данных..." встраивать в ContentLayout и скриптами управлять видимостью этой надписи и основной части балуна. Тут вторая проблема.

2) Не получается поменять данные в балуне. Даже если просто в событии balloonopen сделать

placemark.balloon.setData(<объект с данными>)

, то балун все равно откроется с незаполненными данными. При этом вполне работает

placemark.properties.set('balloonContent', "Идет загрузка данных...")

, если, конечно, при создании placemark не передавать ContentLayout балуна.

Т.е. вопросы:

1) Есть ли возможность сменить ContentLayout открытого балуна и передачей новых данных?

geoObject.Balloon.setOptions({contentLayout: BalloonContentLayout})

я тоже пробовал - не работает.

2) Если нет, то возможно ли открытому балуну передать новые данные для ContentLayout, чтобы он их отобразил?

2 комментария
Подписаться на комментарии к посту
Макет содержимого меняется без проблем
Данные балуну метки передаются через properties метки
Данные балуну карты можно передать при открытии через метод open и после через setData
dimik,
Спасибо большое, работает. Я, видимо, как-то не так делал.