Как уничтожить () мое всплывающее окно правильно в Сенча Touch - PullRequest
1 голос
/ 13 февраля 2012

У меня возникают проблемы с реализацией метода уничтожения в моем всплывающем окне. Все работает хорошо, приведенный ниже код работает для одного всплывающего окна, которое меняет свое содержимое в зависимости от того, на что нажимали. Но я замечаю, что мой контент (медиа) по-прежнему воспроизводится при скрытии всплывающего окна. Я хотел бы полностью уничтожить его и создать заново по клику. На форумах я не нашел ничего, что помогло бы мне достичь этого, поэтому я думаю, что это поможет и другим: -)

Меня смущает пара вещей, так как на маркерах уже есть прослушиватель щелчков, который запускает всплывающее окно, куда мне поместить код уничтожения? Должен ли я объявить ее как отдельную функцию за пределами всплывающего окна, а затем как-нибудь вызвать ее перед собой?

function addMarker(country) 
        {
    if (true) 
            {
      var image = new google.maps.MarkerImage(country.image48Path);
      var marker = new google.maps.Marker({
        map: map.map,
        title: country.title,
        position: country.position,
        //draggable: true,
        icon:image
      });


      var goToCountryWrapper = function (button, event)
                {
                    goToCountry(country, this.popup);
      };


      google.maps.event.addListener(marker, 'click', function() 
                {
        if (!this.popup) 
                    {  ---> Should I be placing destroy code here?
          this.popup = new Ext.Panel(
                            {
            floating: true,
            modal: true,
            centered: true,
            width: 800,
            height: 600,
            styleHtmlContent: true,
            scroll: 'vertical',
            items:[(new countryOverlay(country)).overlayPanel,
            {
              xtype:'button', 
              margin: 20,
              ui:'action-round',
              text:'Click here to view more promo videos',
              handler:goToCountryWrapper,
              scope : this
            },],
                layout: {
              type: 'auto',
              padding: '55',
              align: 'left'
            },
            dockedItems: [{
              dock: 'top',
              xtype: 'toolbar',
              ui: 'light',
              title: country.title
              }],
    ---> Should I be placing a listener here for beforehide, destroying here?
          });
        };
        this.popup.show('pop');

      });    
    }
  };

---> Should I be placing the destroy code after, as a seperate function?

Спасибо

Digeridoopoo

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

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

this.popup.on('hide', function() {
    this.popup.destroy();
}, this);
0 голосов
/ 22 января 2016

Проверьте это

             hideOnMaskTap:true,
                    listeners : {
                        hide: function() {
                          this.destroy();
                          }
                    },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...