Event parameter not defined for Knockout click bin

2020-06-16 01:32发布

问题:

I am getting this JS error: ReferenceError: event is not defined when I try to pass the event object to click binding when I use Firefox 23. Everything works fine under Chrome

Here the code:

<!-- ko foreach: entries -->
   <tr data-bind="click: function(){ $parent.expandRow($data, event) }">
      ...
   </tr>
<!-- /ko -->


vm.entries.expandRow = function(entry, event){
    ...           
}

回答1:

Here the solution from github.com/knockout/knockout/issues/752

<!-- ko foreach: entries -->
   <tr data-bind="click: function(data, event){ $parent.expandRow($data, event) }">
      ...
   </tr>
<!-- /ko -->

Under Firefox event is not defined on the window object, instead it needs to be passed to the function.



回答2:

I know that this is a pretty old question, but still if someone is looking for the answer then I achieved it in the following way:

<div id="this-element" data-bind="click : function(){ $root.clicked(event)}">

</div>

Following code (clicked function) is written in the ViewModel for the page:

this.clicked= function (event) {
    console.log(event.currentTarget.id);
}

Knockout 3.4.2

jQuery 3.2.1