Клуб API Карт

доступ к ObjectProperties из templateLayoutFactory

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

 код:

_myBalloonContentLayoutClass = ymaps.templateLayoutFactory.createClass(

                '$[properties.optTime]<hr/>' +

                '<p >Описание: $[properties.optTxt]<br/>' +

                'Важность: $[properties.optWarn|обычная]</p>' +

                '<p> <a class="myClass" id="$[properties.optId]">Посмотреть подробнее</a> </p>', {

                    build: function () {

                        _myBalloonContentLayoutClass.superclass.build.call(this);

                        jQuery('#' + properties.optId).click(function () { //error : properties.optId undefined

/* тут не нашел ни properties.optId 

   ни что либо подобное в объекте this */

                            _callMyGlobFunc.call(properties); //использование properties в другой функции..

                        });

                    },

/* ... */

                    }

                }

            ); 


как я понл в методах build | clear etc... нет доступа к полям объекта для которого создается baloon ?

6 комментариев

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

а этого не может быть ни в одном нормальном АПИ.

можно попробовать поискать в this.getData()

пока есть такой выход:

/* .... */

build: function () {

  _myBalloonContentLayoutClass.superclass.build.call(this);

  jQuery('a.myClass').click(function () {

/* сразу вопрос - balloon может быть только 1 на карте?

можно ему просто присвоить #ID и искать по нему, или так не правильно? */

    _callMyGlobFunc.call(this);

/* и через атрибуты < a data-xxx > передавать параметры, но не совсем "удобно" */

  });

}

можно ограничить поиск внутри дом балуна jQuery('a.myclass',  this.getParentElement())

а все же подскажите как заполучить значение $[properties.optId] из методов? 
искать или парсить this.getParentElement().innerHTML как то совсем грусно
а в файр баге вижу одну большую фигу на месте this.getData() :(

 

Расскажите как получить фигу?

Вставляя в этом примере в метод build

console.log(this.getData().properties.getAll());

я вижу объект

О! пасиба за оперативный ответ, как раз это я и искал.

Что касается фиги, рецепт прост:
открываем файр баг, тыкаем точку останова где нить в методе и разглядываете много-методную фигу в лице getData() со всех сторон. Если долго разглядывать или знать куды глядеть, то наверное можно углядеть и искомый getData().properties.getAll(), но я не углядел.
Но теперь я тоже вижу объект! Аллилуйа я прозрел :).
Хорошего вам дня