Передача неизвестной функции в привязке нокаута (foreach) - возможно ли это?
Для простого примера, скажем, это мой ретранслятор:
<ul data-bind="foreach: items">
<li data-bind="text: property1, attr: { onclick: some_unknown_function }"></li>
</ul>
Я хочу, чтобы тот, кто использует этот код, мог передавать функцию по своему выбору, а НЕ в самой модели, которая будет работать по щелчку - это возможно? Будет ли способ присвоить его модели и установить в качестве привязки клика? Я не могу понять это...
1 ответ
Решение
Выяснил довольно простой способ, иногда я забываю, как буквально JS...
Поменял мой репитер на это:
<ul data-bind="foreach: items">
<li data-bind="text: property1, click: myClick }"></li>
</ul>
И моя модель к этому:
function Item(options) {
var self = this;
options = options || {};
self.property1 = ko.observable(options.property1 || '');
self.onclick = options.onclick || null;
self.myClick = function () {
if (self.onclick != null) {
self.onclick()
}
}
}