Home > Software engineering >  Data bind click even pass current object to parameter
Data bind click even pass current object to parameter

Time:05-18

I am looping through objects and I want to send only current object when clicked.

<div  data-bind="foreach: contacts">
                <div >
                    <div >
                        <label data-bind="text: contactLabel"></label>
                        <label style="font-size:smaller" data-bind="text:contactRole"></label>
                        <img  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() above is receiving all object values instead of only one.

CodePudding user response:

You are calling editContact in your binding. That means knockout will call it once (passing $root) when ko.applyBindings runs. Assuming editContact does not return a function, the click binding will then be ignored.

If you pass $root.editContact without calling it, knockout will call it on click with two parameters: the current object ($data), and the click event.

data-bind="click: $root.editContact"

If your editContact requires this to refer to $root, you can use .bind:

data-bind="click: $root.editContact.bind($root)"
  • Related