2 votes

Envoyer la cible de l'événement à l'intérieur de data-bind click html

Je ne peux pas envoyer de cible d'événement lorsque j'envoie un paramètre dans la liaison de données.

<button class="tablinks" data-bind="click:$root.notify.bind(this, 1, 'foo');" id="defaultOpen">PRINSIPAL</button>

self.notify = function (str, id, e) {
    if (!e) e = window.event;
    console.log(str + id);
    console.log(e.currentTarget);
});

Le résultat de currectTarget es undefined . Mais si vous n'utilisez pas de paramètre, cela fonctionnera. exemple de fonctionnement :

<button class="tablinks" data-bind="click:$root.notify;" id="defaultOpen">PRINSIPAL</button>

self.notify = function (data, e) {
    console.log(e.currentTarget);
});

La sortie sera <button class="tablinks" data-bind="click:$root.notify;" id="defaultOpen">PRINSIPAL</button>

Comment obtenir la cible d'un événement lorsque j'analyse plusieurs paramètres ?

1voto

George Bailey Points 7920

Sur Knockoutjs , event est toujours transmis comme dernier argument au gestionnaire d'événement. Vous pouvez donc l'attraper et l'utiliser comme suit

function vm(){
  this.notify = function (str, id, e,event) {

    console.log(event.currentTarget)
    }
}

ko.applyBindings(new vm())

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.0.0/knockout-min.js"></script>
<button class="tablinks" data-bind="click:$root.notify.bind(this, 1, 'foo');" id="defaultOpen">PRINSIPAL</button>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X