0
votes

Y a-t-il un moyen d'abattre RowClick dans Tabulator

J'ai les deux rowclick et RowdblClick manutentionnaires pour une table tabulatrice, je voudrais débattuer le gestionnaire rowclick donc je ne le fais pas Obtenez deux RowClick S puis un RowdblClick Faire du tir à chaque fois que je dblcliquez sur une ligne, y a-t-il une méthode intégrée pour le faire? Je suis conscient que je peux utiliser RXJS et créer un sujet et un débattre, mais j'aimerais utiliser un debond intégré s'il existe.


1 commentaires

Il s'agit d'un problème de traitement des événements standard non unique au tabulateur, à la liaison et à double-clic Les auditeurs d'événements sur le même élément entraîneront le déclic déclenché avant le clic DBL.


3 Réponses :


1
votes

J'ai un problème très similaire - Global Row / CellClick Feu de feu lorsque Colonne Cellclick Fire.

Mon travail autour est de placer E.StopimmediatePropagation () dans la fonction CellClick basée sur la colonne. Cela permet également à l'événement RowdblClick de passer à la hauteur / vers le bas, etc. (bouillonnement?). Cependant, c'est probablement l'inverse de ce dont vous avez besoin, à moins que vous ne supprimiez le besoin d'un double clic en mettant dans une colonne d'événement? P>

var editIcon = function(cell, formatterParams, onRendered){ //plain text value
    return "<i class='fa fa-edit'></i>";
};

var table = new Tabulator("#table", {
    columns:[
        {title:"Name", field:"name"}, //etc
        {formatter:editIcon, headerSort:false, width:40, align:"center", cellClick:function(e, cell){ 
        // do whatever
            e.stopImmediatePropagation(); //prevent table wide rowClick() from also triggering
        },
    ],
    rowClick:function(e, row){
        //all rows/cells will inherit this function, however the cell level cellClick function will take the first bite of the event before bubbling up to rowClick
    },
});


1 commentaires

Cool, je suis allé une route différente et j'utilisais des sujets pour avoir vérification dessus et restreindre de cette façon, je posterai le code quand je reviens.



0
votes

Ce que j'ai fini par faire à la fin, utilise une éventisseuse et faisons une .emit et en passant l'identifiant de la ligne qui a été cliqué sur. Ensuite, dans mon tuyau pour mon abonnement à l'événementMitter, j'ai fait un .distinct, éliminant le second clic sur la même ligne lorsque vous double-cliquez. XXX


0 commentaires

1
votes

Il s'agit d'un comportement de clic JavaScript standard plutôt que de quelque chose de spécifique au tabulateur

à tout moment, vous liez un gestionnaire de clic et double cliquez sur le gestionnaire de clics sera déclenché en premier. P>

Je vous suggère que vous Utilisez un délai de définition Pour détecter si le double clic est arrivé, vous effectuez ensuite l'événement Double-clic effacer le délai d'attente d'empêcher l'action du clic de se produire: P>

  var debounce = null; //hold debounce timer

  var table = new Tabulator("#table", {
    rowClick:function(e, row){
        debounce = setTimeout(function(){
            //do something
        }, 100)
    },
    rowDblClick:function(e, row){
        clearTimeout(debounce);
    },
});


0 commentaires