我有一个带-webkit-overflow-scrolling的div:触摸其中的项目列表。
我正在使用Angular ngTouch,它可以处理所有ng-clicks作为phonegap App上的点击事件。
然而,当我滚动我的列表,并且ios本机动量滚动开始时,我希望能够通过点击停止动态滚动,就像你在本机ios应用程序上做的那样。
会发生另一个点击事件。所以我的问题是:
如何使用水龙头停止动量(本机)滚动,而不会触发另一个实际的点击事件......
希望我的问题很明确......
答案 0 :(得分:1)
最近我在angular-ionic-typeScript项目中遇到了同样的问题。 我在这里是如何解决的:
我创建了一个自定义指令:
angular.module('directive.scrolldetector', [])
.directive('scrollDetector', function ($window) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
scope.$on('$destroy', () => {
element.off("scroll");
});
element.on('scroll', function () {
scope.$evalAsync(function () {
scope.$eval(attrs.scrollDetector);
});
});
}
}
});
现在你可以像这样检测onScrollEvent:
<ion-content scroll-detector="onScroll()">
...
</ion-content>
在滚动时,onScroll()函数会不断触发。在此功能中,您应该保存时间戳:
onScroll = () => {
lastScrollTimestamp = (new Date()).getTime();
}
最后一步是检查我们lastScrollTimestamp的ion-context中的每次ng-click:
onClick = () => {
if( lastScrollTimestamp + 300 > (new Date()).getTime()) { //at least 300ms there was no scrolling
//do your stuff
}
}