Sencha Touch - Wydarzenia

Zdarzenia są wywoływane, gdy coś dzieje się z klasą. Na przykład, gdy przycisk jest klikany lub przed / po renderowaniu elementu.

Metody zapisywania wydarzeń

Poniżej przedstawiono metody zapisywania wydarzeń.

  • Wbudowane zdarzenia korzystające z detektorów.
  • Dołączanie wydarzeń później
  • Wydarzenia niestandardowe

Wbudowane zdarzenia przy użyciu detektorów

Sencha Touch zapewnia właściwości słuchacza do zapisywania wydarzeń i zdarzeń niestandardowych w plikach Sencha Touch.

Słuchacz piszący w Sencha Touch

Dodamy odbiornik w poprzednim programie, dodając właściwość Listen do panelu, jak pokazano poniżej -

<!DOCTYPE html>
<html>
   <head>
      <link href = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/resources/css/sencha-touch.css" rel = "stylesheet" />
      <script type = "text/javascript" src = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/sencha-touch-all.js"></script>
      <script type = "text/javascript">
         Ext.application({
            name: 'Sencha', launch: function() {
               Ext.create('Ext.Panel', {
                  html: 'My Panel', fullscreen: true, listeners: {
                     painted: function() {
                        Ext.Msg.alert('I was painted to the screen');
                     }
                  }
               });
            }
         });
      </script> 
   </head>
</html>

To da następujący wynik -

W ten sposób możemy również zapisać wiele zdarzeń we właściwości Listeners.

Wiele zdarzeń w tym samym odbiorniku

<!DOCTYPE html>
<html>
   <head>
      <link href = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/resources/css/sencha-touch.css" rel = "stylesheet" />
      <script type = "text/javascript" src = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/sencha-touch-all.js"></script>
      <script type = "text/javascript">   
         Ext.application({
            name: 'Sencha',
            launch: function() {
               var myButton = Ext.Viewport.add({
                  xtype: 'button',
                  centered: true,
                  text: 'Click me'
               });

               myButton.on({
                  tap: function() {
                     var randomWidth = 100 + Math.round(Math.random() * 200);
                     this.setWidth(randomWidth);
                  },
                  widthchange: function(button, newWidth, oldWidth) {
                     alert('My width changed from ' + oldWidth + ' to ' + newWidth);
                  }
               });
            }
         });       
      </script> 
   </head>
</html>

To da następujący wynik -

Dołączanie wydarzenia później

W poprzedniej metodzie zapisywania zdarzeń zapisywaliśmy zdarzenia w słuchaczach w momencie tworzenia elementów.

Inny sposób dołączania wydarzeń jest następujący -

<!DOCTYPE html>
<html>
   <head>
      <link href = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/resources/css/sencha-touch.css" rel = "stylesheet" />
      <script type = "text/javascript" src = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/sencha-touch-all.js"></script>
      <script type = "text/javascript">
         Ext.application({
            name: 'Sencha',
            launch: function() {
               var myButton = Ext.Viewport.add({
                  xtype: 'button',
                  centered: true,
                  text: 'Click me'
               });
               
               myButton.on('tap', function() {
                  alert("Event listener attached by .on");
               });
            }
         });
      </script> 
   </head>
</html>

To da następujący wynik -

Wydarzenia niestandardowe

Możemy pisać zdarzenia niestandardowe w Sencha Touch i odpalać zdarzenia metodą fireEvent. Poniższy przykład wyjaśnia, jak pisać zdarzenia niestandardowe.

<!DOCTYPE html>
<html>
   <head>
      <link href = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/resources/css/sencha-touch.css" rel = "stylesheet" />
      <script type = "text/javascript" src = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/sencha-touch-all.js"></script>
      <script type = "text/javascript">
         Ext.application({
            name: 'Sencha',
            launch: function() {
               var myButton = Ext.Viewport.add({
                  xtype: 'button',
                  centered: true,
                  text: "Just wait 5 seconds",

                  listeners: {
                     myEvent: function(button, points) {
                        alert('myEvent was fired! You score ' + points + ' points');
                     }
                  }
               });

               Ext.defer(function() {
                  var number = Math.ceil(Math.random() * 100);
                  myButton.fireEvent('myEvent', myButton, number);
               }, 5000);
            }
         });
      </script> 
   </head>
</html>

Gdy strona jest załadowana, a dokument jest gotowy, pojawi się strona interfejsu użytkownika z przyciskiem, a ponieważ uruchamiamy zdarzenie po 5 sekundach, gdy dokument jest gotowy, po 5 sekundach pojawi się okno ostrzegawcze.

Tutaj napisaliśmy zdarzenie niestandardowe „myEvent” i wyzwalamy zdarzenia jako button.fireEvent (eventName);