Событие Angular ng-Touch не выполняется в Windows 8.1 и Windows Phone Overflow
В настоящее время я использую Angular 1.3.13, angular-touch 1.3.15 и Cordova 4.1.2 со следующим кодом.
<div ng-controller="myController">
<ul>
<li ng-swipe-right="swipeRight()">Swipe Me</li>
<li ng-swipe-right="swipeRight()">Swipe Me</li>
<li ng-swipe-right="swipeRight()">Swipe Me</li>
<li ng-swipe-right="swipeRight()">Swipe Me</li>
</ul>
</div>
Со следующим контроллером.
angular.module('myApp').controller('myController', function($scope, messages) {
$scope.swipeRight = function() {
console.log('swipe-right');
}
});
В эмуляторе Windows Phone и Windows 8.1 событие смахивания срабатывает нормально до тех пор, пока список не станет достаточно большим, чтобы вызвать переполнение, при котором события смахивания перестают срабатывать. Если вы установите свойство переполнения скрытым, события свипа возобновят работу. Кто-нибудь видел эту проблему раньше? Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
1 ответ
У меня похожая проблема с приложением магазина Windows. Все отлично работает для управления режимом мыши, но для сенсорного режима события смахивания не работают. http://hammerjs.github.io/ - Регистрация слушателя HammerJS волшебным образом помогает, начинают работать события угловых ударов.
<div id="myElement" ng-cloak ng-swipe-left='next()' ng-swipe-right='previous()'>
...
//Register swipe event
var mc = new Hammer($('#myElement')[0]);
// listen to events...
mc.on("swipeleft swiperight", function (ev) {
if(ev.type == "swipeleft")
{
//$scope.previous(); //No need for this
}
else if (ev.type == "swiperight") {
//$scope.next();
}
});
//Angular Swipe functions
$scope.next = function() {
//Do something
};
$scope.previous = function() {
//Do something
};
Я надеюсь, что это может помочь.