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

标签 jquery knockout.js

我有一个通过 php 生成的 anchor 链接,它将绑定(bind)在 ko 上并且工作正常。我的问题是为什么 ko 函数在加载元素时执行?下面是生成的代码。

html:

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

ko函数:

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

请帮助我...提前致谢:)

最佳答案

这就是对象字面量在 Javascript 中的工作方式,因此在创建对象时会立即评估函数类等属性值。

要使其正常工作,您需要将 click 绑定(bind)中的函数调用包装到匿名函数中:

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

另请参阅文档:Accessing the event object, or passing more parameters

关于jquery - knockout : Why does click data-bind has execute on-load of element?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19276164/

相关文章:

jquery - Netezza 中的嵌套查询中无法访问外部表

javascript - 我应该如何清理 KnockoutJS ViewModels?

javascript - 从 JS 嵌套模型中 knockout JS 映射

jquery - 我怎样才能让用户在不打扰他们的情况下将持续时间输入到 HTML5 网络表单中?

javascript - 事件监听器以确定单击的目标是否是特定类的元素

javascript - 如何动态加载模态

javascript - Knockout.js - 如何在计算的可观察对象中获取可观察属性的值?

javascript - 为什么 jQuery 会这样做 : jQuery. fn.init.prototype = jQuery.fn?

javascript - Knockout JS href attr 未在 .NET MVC4 部分页面上绑定(bind)

javascript - 无法推送新数据到knockoutjs?