Задать вопрос
@forestrg

Как в скрипте яндекса поменять Title ListBox?

добрый день, нашел у яндекса выпадающий список для карт https://tech.yandex.ru/maps/jsbox/2.1/list_box_layout
но не пойму как поменять заголовок "выберете пункт" так чтобы он при выборе менялся?
т.е. выбрал Омск и заголовок стал "Омск"
  • Вопрос задан
  • 252 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
lazalu68
@lazalu68
Salmon
Учтите, что никакого трекинга нет, просто вставляется текст элемента из списка и всё, так что получилось
очень грязное решение
function init(){var t="",e=new ymaps.Map("map",{center:[55.751574,37.573856],zoom:9,controls:[]}),n=ymaps.templateLayoutFactory.createClass("<button id='my-listbox-header' class='btn btn-success dropdown-toggle' data-toggle='dropdown'><span class='title'>{{data.title}}</span> <span class='caret'></span></button><ul id='my-listbox' class='dropdown-menu' role='menu' aria-labelledby='dropdownMenu' style='display: {% if state.expanded %}block{% else %}none{% endif %};'></ul>",{build:function(){t&&(this._templateDataManager._data.data._data.title=t),n.superclass.build.call(this),this.childContainerElement=$("#my-listbox").get(0),this.events.fire("childcontainerchange",{newChildContainerElement:this.childContainerElement,oldChildContainerElement:null})},getChildContainerElement:function(){return this.childContainerElement},clear:function(){this.events.fire("childcontainerchange",{newChildContainerElement:null,oldChildContainerElement:this.childContainerElement}),this.childContainerElement=null,n.superclass.clear.call(this)}}),a=ymaps.templateLayoutFactory.createClass("<li><a>{{data.content}}</a></li>"),l=[new ymaps.control.ListBoxItem({data:{content:"Москва",center:[55.751574,37.573856],zoom:9}}),new ymaps.control.ListBoxItem({data:{content:"Омск",center:[54.990215,73.365535],zoom:9}})],i=new ymaps.control.ListBox({items:l,data:{title:"Выберите пункт"},options:{layout:n,itemLayout:a}})
i.events.add("click",function(n){var a=n.get("target")
a!=i&&(t=n._sourceEvent.originalEvent.target.data._data.content,i._topContainer.previousElementSibling.firstElementChild.textContent=t,e.setCenter(a.data.get("center"),a.data.get("zoom")))}),e.controls.add(i,{"float":"left"})}ymaps.ready(init)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы