我搜索了几个例子,但我没有找到任何解决我的问题。我的问题很简单,我需要一个元素与两个事件,一个点击和双击事件。我这样做,但事件绑定在一起,我不需要这个…我需要我点击元素两次(双击),元素的状态被选中,如果我点击一次,元素被取消选中,现在没有被选中。我也这样做,结果是一样的,事件一起发生……有人知道怎么做吗??
谢谢
试试这个:
参见Vikas Gautam (@Vikasg7)在CodePen上的Pen Tap和Double Tap Ionic。指令如下:-
SepTap.$inject = ["$ionicGesture"]
function SepTap(IonicGesture) {
return {
restrict: "A",
link: linkFunc
}
function linkFunc(scope, ele, attrs) {
var isDoubleTap = false
var tap = IonicGesture.on("tap", onTap, ele)
var doubleTap = IonicGesture.on("doubletap", onDoubleTap, ele)
function onTap() {
setTimeout(onTap, 250)
function onTap() {
if (isDoubleTap) return
scope.$apply(attrs.stTap)
}
}
function onDoubleTap() {
isDoubleTap = true
scope.$apply(attrs.stDoubleTap)
// onTap is called twice almost immediadetly with a delay
// of 250ms, so using a delay of 300ms (50ms more) to
// reset isDoubleTap to false.
setTimeout(function () { isDoubleTap = false }, 300)
}
ele.on("$destroy", function () {
IonicGesture.off(tap, "tap", onTap)
IonicGesture.off(doubleTap, "doubletap", onDoubleTap)
})
}
}
请查看以上代码以获得完整实现。
http://www.gajotres.net/ionic-framework-series-13-touch-gestures/在评论部分说ionic已经禁用了onTap相关的延迟,该延迟用于分别检测这些tap类型。没有提到任何解决方法,只是不可能将它们区分开来。
文本片段:
不幸的是,一年前所做的更改从Ionic应用程序中删除了300ms的点击延迟。我说它很不幸,因为现在应用程序不能正确地检测同一元素上的点击/双击。两者都将触发。
我用
$scope.onDoubleTap = function(event){
setTimeout(function(){
if(!$(element).hasClass("selected")) {
$(element).addClass("selected");
......
}
},400);
};
$scope.onTap = function(event){
if($(element).hasClass("selected")){
$(element).removeClass("selected");
.....
}
};