Клуб API Карт

map.Balloon в версии 2.0 и 2.1

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

В версии 2.0 мы могли сделать нечто:

ymaps.ready(function(){
    var map = new ymaps.Map("map",{
        center: [55.76, 37.64],
zoom: 10
});
var balloon = map.balloon.open(map.getCenter(), { content: 'Hello Yandex!' }, { closeButton: true });
balloon.setData({content: "changed Text"});

})

В версии 2.1 этот же код выдает на balloon.setData(....) ошибку "Uncaught TypeError: undefined is not a function"

Карты подключались так:

<script src="https://api-maps.yandex.ru/2.1/?load=package.full&lang=ru_RU&mode=debug" type="text/javascript"></script>
<!--<script src="https://api-maps.yandex.ru/2.0/?load=package.full&lang=ru_RU&mode=debug" type="text/javascript"></script>-->

Важный: Как поменять контент балуна в версии 2.1?

Офтопный: это же поломанная обратная совместимость, неотображенная по семвер?

3 комментария
Sergey Konstantinov
27 января 2016, 22:19
В 2.1 open() возвращает промис, какие-то дейстия с балуном можно выполнять после success-колбэка.

Что касается вашего офтопного вопроса, то API версионируется не по семверу.
https://tech.yandex.ru/maps/doc/jsapi/2.1/versions/concepts/index-docpage/#numbering
Наша система версионирования как бы на три года раньше семвера появилась.

Cпасибо. Я было предположил, что 


var balloon = map.balloon.open(map.getCenter(),
{ content: 'Hello Yandex!' },
{ closeButton: true }).done(function(val){
    console.log("done", val);
});

 

надо так, но val в колбеке undfined, а map.geoObjects.getLength() возвращает 0, будто балуна нет вовсе. ЧЯДНТ?

Работать с балуном можно лишь после resolve, но как получить сам балун не понятно 

Балун это не геообъект, он не появится в myMap.geoObjects

Получить его можно также через myMap.balloon, это инстанция map.Balloon он всегда в единственном экземпляре (синглетон)