knockout.js – 在foreach中单击绑定到父函数

前端之家收集整理的这篇文章主要介绍了knockout.js – 在foreach中单击绑定到父函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下html:
<div data-bind="foreach: Contacts">
   <a data-bind="click: $parent.Foo($data),text: Name">link</a>
</div>
<button data-bind="click: AddContacts">click</button>

和js代码

var viewmodel = ko.mapping.fromJS({"Selected":null,"Contacts":[]});
viewmodel.AddContacts = function(){
    this.Contacts([{"Name":"C1"},{"Name":"C2"}]);
}

viewmodel.Foo = function (contact) {
    alert(contact.Name);
}

ko.applyBindings(viewmodel);

当我点击按钮时,每个联系人都会呼叫Foo.在任何一个链接被点击之前,我根本就不希望这样被调用.

解决方法

正如 nemesv所说.参数是函数参考.所以你正在做的是使用函数的结果作为点击事件.

对您传递的函数调用自动包含该项目的数据,因此您不需要手动传递它:

<div data-bind="foreach: Contacts">
   <a data-bind="click: $parent.Foo,text: Name">link</a>
</div>

http://jsfiddle.net/4cUv9/

猜你在找的JavaScript相关文章