2014-06-16 51 views
2

我有一個與-webkit溢出滾動div:觸摸與其中的項目列表。停止動力滾動ontouchstart ngTouch AngularJS

我正在使用Angular ngTouch,它可以處理我在電話應用程序上點擊事件的所有ng-clicks。

但是,當我滾動我的列表,並且ios本地動量滾動開始時,我希望能夠停止與水龍頭一起滾動的動力,就像您在本機ios應用程序上做的一樣。

發生的是另一個點擊事件被觸發。所以我的問題是:

如何停止的勢頭(本機)用自來水滾動,不費一槍另一實際敲擊事件......

希望我的問題是清楚的...

+0

完全清楚。我遇到了同樣的問題,點擊連接錯誤。我想先停止滾動,然後在第二次點擊時執行鏈接操作。解決這個問題的任何成功?可以這個帖子幫助:http://stackoverflow.com/questions/13812936/detect-if-element-has-stopped-momentum-scrolling?rq=1 –

+0

什麼新的呢? @SergevandenOever –

回答

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 NG點擊:

onClick =() => { 
    if(lastScrollTimestamp + 300 > (new Date()).getTime()) { //at least 300ms there was no scrolling 
      //do your stuff 
    } 
}