Estoy recorriendo objetos y quiero enviar solo el objeto actual cuando se hace clic.
<div class="box" data-bind="foreach: contacts"> <div class="contact LightGray-background"> <div class="contactType"> <label data-bind="text: contactLabel"></label> <label style="font-size:smaller" data-bind="text:contactRole"></label> <img class="hasInfoPopup" data-bind="click: $root.editContact($root)" data-info="Edit Contact" src="~/images/plus-inverted-large.png" style="height:16px;width:16px;float:right" /> </div>editContact() arriba está recibiendo todos los valores de objeto en lugar de solo uno.
Está llamando a editContact en su enlace. Eso significa que knockout lo llamará una vez (pasando $root ) cuando se ejecute ko.applyBindings . Suponiendo que editContact no devuelva una función, se ignorará el enlace de click .
Si pasa $root.editContact sin llamarlo, knockout lo llamará al hacer clic con dos parámetros: el objeto actual ( $data ) y el evento de clic.
data-bind="click: $root.editContact" Si su editContact requiere this para referirse a $root , puede usar .bind :
data-bind="click: $root.editContact.bind($root)"