Событие Swipe в Jquery mobile не запускается с Knockout.js - PullRequest
0 голосов
/ 04 июля 2018

У меня есть эта html-таблица, по которой мне нужно перемещаться по страницам с помощью «swipe».

onSwipeRight = function () {
	gridPager.CurrentPage(gridPager.CurrentPage() + 1);
},
                    
onSwipeLeft = function () {
	gridPager.CurrentPage(gridPager.CurrentPage() - 1);
},
<table width="100%" border="0" cellspacing="0" cellpadding="0" data-bind="swiperight: onSwipeRight, swipeleft: onSwipeLeft">
	<tr class=" filterpanel">
		<td><span class="rowMove" style="background: none;"></span></td>
		<td><input type="text" data-bind="value: filtercus.name, valueUpdate: 'afterkeydown'"></td>
		<td><input type="text" data-bind="value: filtercus.code, valueUpdate: 'afterkeydown'"></td>
		<td><input type="text" data-bind="value: filtercus.description, valueUpdate: 'afterkeydown'" style="width: 295px"></td>
	</tr>
</table>

Когда я вызываю те же JS-методы для события click, событие срабатывает успешно. Но на Swipe это не работает.

1 Ответ

0 голосов
/ 04 июля 2018

Если вам нужно обработать события свайпа через нокаут, вместо того, чтобы обрабатывать его напрямую, используйте привязку event:

data-bind="event:{swiperight: onSwipeRight}"

Очевидно, onSwipeLeft и onSwipeRight должны быть объявлены внутри Вашей модели представления.

Более того, я полагаю, что вы уже знаете, что первые два параметра, переданные в вашу функцию-обработчик события выбивки,

  1. data (ViewModel в контексте)
  2. event (событие jQuery)

Это означает, что вы также можете использовать только одну функцию для обработки обоих направлений пролистывания, влево и вправо:

onSwipe = function (data, event) {...

... потому что тип jQuery.Event.type будет "swiperight" или "swipeleft".

...