Joey Estrada Joey Estrada - 2 years ago 159
jQuery Question

KnockOutJs: Why does click data-bind has execute on-load of element?

I have a anchor link generated via php which will be binded on ko and works fine. My problem is why does the ko function is executed on load of the elements? below is the code generated.


<a data-bind="click: addOrderedProducts(11,"CRM130930001","Cream",0.00,0,0,0)" class="Add" title="Add" href="">Add</a>

ko function:

self.addOrderedProducts = function (id,product_number,name,price,quantity,discount,balance){
self.orderedProducts.push(new Product(id,product_number,name,price,quantity,discount,balance));

please help me... Thanks in advance :)

Answer Source

This is how object literals are working in Javascript so the property values like function class immediately evaluated when the object gets created.

To make it work you need to wrap your function call in the click binding into an anonymous function:

<a data-bind="click: function () { addOrderedProducts( ... ) }" href="">Add</a>

See also in the documentation: Accessing the event object, or passing more parameters

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download