Клуб API Карт

шаблон балуна[РЕШЕНО]

iytin-ne
12 ноября 2012, 18:57

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

 

$('#save_changes').live('click',function(){
            var _this=myPlacemark[$(this).attr('data')];
            _this.properties.set('title', $('#title').val());
            if($('#Thread').attr('checked')){
                _this.properties.set('isThread', "checked");
            }else{
                _this.properties.set('isThread', '');
            }
            if($('#Showplace').attr('checked')){
                _this.properties.set('isShowplace', 'checked');
            }else{
                _this.properties.set('isShowplace', '');
            }
            if(desc=$('textarea:[name=desc]').val())
            _this.properties.set('description', desc);
            _this.balloon.close();
            killShadow();
            return false;
        })

 

/ Создаем шаблон для отображения контента балуна class="temp_wrap"
            var myBalloonLayout = ymaps.templateLayoutFactory.createClass(

                 '<div ><div >'+
                '<a class="close" id="close">&times;</a>'+
                '<div class="name_row">'+
                    '<label>Название</label>'+
                    '<input type="text" id="title" placeholder="Введите название" value="$[properties.title]" class="span2">'+
                    '<a href="#" class="btn"><i class="icon-refresh"></i></a>'+
                '</div>'+
                '<div class="check_row"><label class="checkbox">'+
                    '<img src="imgs/add_uno.png" width="22" height="11"> Добавить отметку к нитке маршрута'+
                    '<input type="checkbox" name="first_ch" id="Thread" $[properties.isThread]></label>'+
                '</div><div class="check_row">'+
                    '<label class="checkbox"><img src="imgs/add_dos.png"  width="22" height="11"> Это достопримечательность'+
                    '<input type="checkbox"   id="Showplace" $[properties.isShowplace]></label>'+
                '</div><div class="desc_row">'+
                    'Описание:         <textarea name="desc" rows="3"  id="textarea">$[properties.description]</textarea>'+
             '</div>'+
                 '<div class="btn_row"><a href="#" data="$[properties.id]" id="delete" class="btn btn-danger">Удалить</a>'+
                 '<a href="#" id="save_changes" data="$[properties.id]" class="btn btn-success">ОК</a>'+
                 '<a href="#" id="close" class="btn">Отмена</a>'+
                 '</div><div  class="clear"></div></div></div>'
            );

 

 

4 комментария
Подписаться на комментарии к посту

Я не могу найти какие-то явные баги в коде, попробуйте поотлаживаться. Посмотрите, выполняется ли операция set и какое значение передается при этом в properties

Здравствуйте Марина, я вчера весь день клацал так и не понял, чувствую что где-то мелочь упустил из-за невнимательности а вот гду хз)

Если Вам не сложно, можете посмотреть карту http://cybers.net.ua/5/ чтобы увидеть сие чудо нужно нажать на кнопку с картинкой метки потом кликнуть на карте для создания метки, потом правый клик и вуаля - балун с зловещими элементами. После ввода нажать ОК, и все должно сохранится, для проверки снова можно открыть метку правым кликом.

 

 

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

Вариантов решения 2 - либо сразу собирать в хэш набор навых данных и один раз в конце делать _this.properties.set({...}).

Либо в начале обработки вызывать метод properties.freeze(), а после properties.unfreeze(); При таком варианте не будут генерироваться события change и балун не будет перестраиваться.

:-D Урааааа!!!! Спасибо большое Марина, вы мне как всегда очень помогли!!(+1)