2010-04-20 3 views
0

Comment savoir quel est le comportement par défaut d'un événement annulable? Par exemple, j'ai lu quelque part que TextEvent.TEXT_INPUT a un comportement par défaut et que le comportement par défaut inclut l'ajout d'un caractère de texte associé à la touche qui a été enfoncée à un TextInput. Cela fait parfaitement sens.Détermination du comportement par défaut d'un événement Flex

Mais si je n'avais pas lu cela, comment saurais-je quel est le comportement par défaut? Autre que de deviner. Dans ce cas, c'est probablement évident. Mais dans d'autres situations, cela pourrait ne pas être le cas.

Par exemple, dans les documents, consultez la propriété cancelable de DataGridEvent.HEADER_RELEASE. Il dit:

résiliables: true

donc, il semble y avoir un « comportement par défaut » associé à un événement DataGridEvent.HEADER_RELEASE. Mais qu'est-ce que c'est? Et pourquoi devrais-je l'annuler si je ne suis pas vraiment sûr de ce que c'est? :)

merci.

Répondre

0

Voici ce que je pense être vrai -

Pour annuler le comportement par défaut associé à un événement, 2 choses doivent être remplies:

  1. L'événement doit être marqué comme annulables (vous pouvez vérifier la propriété annulable de l'événement pour le déterminer). Si vous distribuez l'événement vous-même, définissez le troisième paramètre sur true pour marquer l'événement comme annulable. Si l'événement est marqué comme annulable, l'appel de event.preventDefault() mettra l'événement à "cancelled" et une requête de event.isDefaultPrevented() retournera true. Si l'événement n'est pas marqué comme annulable, appeler event.preventDefault() ne fera rien du tout. Une requête de event.isDefaultPrevented() retournera toujours false, peu importe le nombre de fois que vous appelez event.preventDefault().

  2. Le gestionnaire d'événements enregistré pour l'événement doit réellement avoir la capacité de ne rien faire (c'est-à-dire d'empêcher le comportement par défaut associé à l'événement). Donc, le gestionnaire doit avoir quelque chose comme ça:

    if (! Event.isDefaultPrevented()) {faitQuelque chose(); }

Donc, cela me laisse toujours la question - "Pour un événement annulable de type X, quel est le comportement par défaut?" Je suppose que cela dépend de la cible de l'événement. Par exemple, la cible d'un DataGridEvent.événement HEADER_RELEASE est un DataGrid et à l'intérieur de la classe DataGrid vous trouverez cela dans le constructeur:

addEventListener(DataGridEvent.HEADER_RELEASE, 
        headerReleaseHandler, 
        false, EventPriority.DEFAULT_HANDLER); 

et le gestionnaire ressemble à ceci:

private function headerReleaseHandler(event:DataGridEvent):void 
{ 
    if (!event.isDefaultPrevented()) 
    { 
     manualSort = true; 
     sortByColumn(event.columnIndex); 
     manualSort = false; 
    } 
} 

Ou, vous pouvez fouiner sans but dans la documentation pour toujours et peut-être trébuche sur la réponse comme ceci:

http://livedocs.adobe.com/flex/3/langref/mx/controls/DataGrid.html#event%3aheaderRelease

« le contrôle DataGrid a un gestionnaire par défaut pour cet événement implémente un tri à colonne unique "

Espérons que cette réponse contribue à réduire l'inutilité de votre recherche de documents.

Jeremy

+0

Il n'est pas nécessaire de farfouiller 'sans but '. Lorsque vous avez demandé quel était l'événement par défaut pour ce headerRelease, j'ai pu le trouver dans les documentations en direct dans environ 10 secondes. – invertedSpear

0

Tout est dans le documentation, qui dit: "Le contrôle DataGrid a un gestionnaire par défaut pour cet événement qui implémente un tri sur une seule colonne."

Le live docs un assez complet. Si vous continuez à suivre les liens, vous trouverez généralement ce que vous cherchez.

Questions connexes