Есть несколько вариантов, которые вы могли бы рассмотреть.
-Один использовать обратный вызов create
для управления созданием ваших "пользовательских" объектов.Вы можете сами определить наблюдаемые и добавить дополнительную функциональность или вызвать подключаемый модуль сопоставления для отдельного пользовательского объекта, а затем добавить дополнительную функциональность.
Будет что-то вроде: http://jsfiddle.net/rniemeyer/fkVaK/
-В противном случаеВы можете поместить функцию «toggle» в viewModel, а затем передать ему объект «user».
Хороший способ с 1.3 - использовать ko.dataFor
вместе с чем-то вроде live / делегат / on jQuery.Функциональность делегирования событий.Будет выглядеть так: http://jsfiddle.net/rniemeyer/FkjNr/
//unobtrusive event handler
$(".toggle").live("click", function() {
var user = ko.dataFor(this);
if (user) {
viewModel.toggleIsActive(user);
}
});
Если вы не хотите использовать делегирование событий, вы можете передать элемент напрямую, используя анонимную функцию, такую как: http://jsfiddle.net/rniemeyer/GpQtN/
EDIT: начиная с 2.0 текущие данные автоматически передаются в обработчик при использовании привязок клика / события, поэтому вы можете просто сделать:
<a href="#" data-bind="click: $root.toggleIsActive"><span data-bind="text: IsActive"></span></a>