Knockout.js fornece alguns “eventos”, como clicar, enviar, etc.
<div data-bind="click: clickHandler"></div>
Infelizmente (ou felizmente) quando se trata de Lungo.js (e Quo.js), não há cliques, apenas eventos de toque. Então, como resolver esse problema?
Knockout fornece a vinculação de dados “evento” que permite vincular a eventos específicos por meio desta sintaxe: (retirado da página de vinculação de eventos KO: http://knockoutjs.com/documentation/event-binding.html )
<div data-bind="event: { tap: tapHandler}"></div>
O que funcionaria bem, no entanto, vendo como todos os eventos de interação serão tornados, parece um pouco redundante ter que especificar a sinopse extra; o código a seguir criará uma ligação ‘tap’:
ko.bindingHandlers.tap = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var callback = allBindingsAccessor().tap;
$$(element).tap(function() {
callback(viewModel);
});
}
, update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {}
}
E para usar, basta substituir ‘click’ por ‘tap’:
<div data-bind="tap: tapHandler"></div>