gpt4 book ai didi

javascript - 禁用除单击之外的所有 hammer.js( Angular 锤)事件

转载 作者:行者123 更新时间:2023-11-28 17:52:47 26 4
gpt4 key购买 nike

我的应用使用 angular-hammer ,我只想针对 tap 事件对其进行优化,以获得最佳性能,因为我不需要任何其他手势。我知道 hammer 只会为指定的 hm-* 选项添加监听器,但我想明确阻止它监听其他事件(特别是双击)。我不知道这是否有必要。 (该应用程序非常注重按钮按下,我了解到这是 iOS 和 Android 混合开发的一个弱点;我想把它改正。)

下面是我使用的参数,注释中有我的解释。这是好的做法,也是我能做到的最好的做法吗?

// do not propagate further events (like pan or swipe) from clicking this element
hm-manager-options="{'touchAction':'none'}"

// disable double tap so it knows any tap is a single tap
hm-recognizer-options="[
{'type':'tap','event':'tap'},
{'type':'dbltap','enabled':'false'}
]"

最佳答案

我知道这是一个很老的问题,但如果您只对 Tap 事件感兴趣,那么为什么不直接使用 ng-click?即单击(或单击鼠标)。

听起来您可能根本不需要 Hammer。如果您只需要一个简单的点击事件处理程序,也许 Bob Nisco's onLongPress directive可用于。您只需要去掉一些位即可仅获取您可能正在寻找的触摸敏感事件。

Here's a Plunk that has an onTap directive基于 Bob Nisco 的工作。它仅在有触摸事件时触发分配的处理程序 - 不是鼠标单击。这是应用程序、 Controller 和指令:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
$scope.list = ['Item 1', 'Thing 2', 'Stuff part 3'];
$scope.messages = ['No events yet'];
$scope.name = 'World';

$scope.myTapHandler = function(item) {
$scope.messages.unshift('Tap: ' + item);
}

});

app.directive('onTap', function($timeout) {
return {
restrict: 'A',
link: function($scope, $elm, $attrs) {
$elm.bind('touchend', function(evt) {
// Prevent the onLongPress event from firing
$scope.longPress = false;
// If there is an on-touch-end function attached to this element, apply it
if ($attrs.onTap) {
$scope.$apply(function() {
$scope.$eval($attrs.onTap)
});
}
});
}
};
});

这是重要的 HTML 位:

<body ng-controller="MainCtrl">
<h3>Things to long-press</h3>
<p ng-repeat="item in list" on-tap="myTapHandler(item)">
[{{ item }}]
</p>

<h3>Messages (instead of console)</h3>
<p ng-repeat="msg in messages">{{msg}}</p>
</body>

关于javascript - 禁用除单击之外的所有 hammer.js( Angular 锤)事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27139166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com