Javascript KnockoutJS-模板上的单击事件
我有以下KnockoutJS模板(使用jquery.tmpl呈现): 如果使用此代码,则不会触发click事件。如果我创建一个匿名函数,如: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
<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"