3
我有以下KnockoutJS模板(与jquery.tmpl渲染):KnockoutJS - 点击模板事件
<script id="contactsTemplate" type="text/html">
<li data-bind="click: contactViewModel.test">${DisplayName}</li>
</script>
<ul id="contact-list" data-bind="template: {name: 'contactsTemplate', foreach:contacts}">
</ul>
和下面的模型视图:
var contactViewModel = function (contacts) {
var self = this;
self.contacts = contacts;
self.test= function() {
console.log("CLICK");
}
,如果我使用此代码,点击事件不会触发。如果我创建像一个匿名函数:
<script id="contactsTemplate" type="text/html">
<li data-bind="click: function(){contactViewModel.test()}">${DisplayName}</li>
</script>
我得到以下异常:
Uncaught TypeError: Object function (contacts) {
var self = this;
self.contacts = contacts;
self.test= function() {
console.log("CLICK");
}
} has no method 'test'
SOLUTION
的解决办法是:$父。
data-bind="click: $parent.test"
看来这是行不通的,它打破了,他将第一个元素之后。我的绑定:ko.applyBindings(new contactViewModel(contacts),$(“#contact”)[0]); – 2012-03-17 12:17:26
@KaffeeBohne - 啊...我看到你的问题。我已经更新了我的答案。 – ColinE 2012-03-17 12:58:09