J'ai les deux rowclick code> et RowdblClick CODE> manutentionnaires pour une table tabulatrice, je voudrais débattuer le gestionnaire rowclick code> donc je ne le fais pas Obtenez deux RowClick CODE> S puis un RowdblClick CODE> 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. P>
3 Réponses :
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
},
});
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.
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.
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);
},
});
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.