Knockout.js e Lungo.js – toques em vez de cliques

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>