У меня есть следующий шаблон KnockoutJS (визуализация с jquery.tmpl):
<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>
и следующий ModelView:
var contactViewModel = function (contacts) {
var self = this;
self.contacts = contacts;
self.test= function () {
console.log("CLICK");
}
, если я использую этот код, событие 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'
РЕШЕНИЕ
решение: $родитель.
data-bind="click: $parent.test"