Javascript KnockoutJS-模板上的单击事件

Javascript KnockoutJS-模板上的单击事件,javascript,knockout.js,jquery-templates,Javascript,Knockout.js,Jquery Templates,我有以下KnockoutJS模板(使用jquery.tmpl呈现): 如果使用此代码,则不会触发click事件。如果我创建一个匿名函数,如: <script id="contactsTemplate" type="text/html"> <li data-bind="click: function(){contactViewModel.test()}">${DisplayName}</li> </script> 解决方案 解决方案是:$p

我有以下KnockoutJS模板(使用jquery.tmpl呈现):

如果使用此代码,则不会触发click事件。如果我创建一个匿名函数,如:

<script id="contactsTemplate" type="text/html">
    <li data-bind="click: function(){contactViewModel.test()}">${DisplayName}</li>
</script>
解决方案

解决方案是:$parent

data-bind="click: $parent.test"

您的
contactViewModel
函数是一个构造函数,但是,您试图将其用作通过该函数构造的对象的实例。您的
contactViewModel
公开了一组联系人,您将这些联系人绑定到
contactsTemplate
模板。因此,此模板中所有绑定的“上下文”都是数组中的对象实例。要绑定到父对象上的函数,即
contactViewModel
,请使用Knockout 2.0父伪变量:

data-bind="click: $parent.test"

在他添加第一个元素后,它似乎不起作用,它崩溃了。我的绑定:ko.applyBindings(新的contactViewModel(contacts),$(“#contact”)[0])@卡菲波尼-啊。。。我明白你的问题了。我已经更新了我的答案。
Uncaught TypeError: Object function (contacts) {
 var self = this;
 self.contacts = contacts;
 self.test= function () {
     console.log("CLICK");
 }
} has no method 'test'
data-bind="click: $parent.test"
data-bind="click: $parent.test"