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