【发布时间】:2015-12-15 04:10:00
【问题描述】:
在我的手机上,当我单击/触摸某个元素时,会在范围内触发某个进程,并且必须对其进行更新,这一切都可以正常工作,但是如果我想立即重复该事件,则无法使用jqLite/jQuery 中的标准.on('click') binder。
当你触摸容器时,两者之间有一定的延迟。
var myApp = angular.module('myApp', ['ngTouch']);
myApp.controller('myCtrl', function MyCtrl($scope) {
$scope.name = 'Superhero';
$scope.counter = 0;
$scope.fire = function() {
$scope.counter++;
};
});
myApp.directive('directiveA', function() {
return {
restrict: 'A',
link : function(scope, element) {
scope.counterB = 0;
$(element).on('click', function() {
scope.counterB++;
scope.$digest();
});
}
};
});
演示:http://jsfiddle.net/HB7LU/21162/
在演示中,如果你触摸红色条的一侧,然后再触摸另一侧,无论你触摸它的速度有多快,它都会更新。
但是,在绿色条上,如果您先触摸左侧,然后再触摸右侧,它不会随着您不断触摸而更新。
红条使用 ng-click 指令,绿条使用标准点击活页夹,然后从该范围链向下运行摘要。
Angulars ngTouch 模块是造成这种延迟的原因。我想知道如何使用 ngTouch 覆盖 ngClick 带来的延迟?
【问题讨论】:
-
在我的电脑上,点击绿色条时我没有看到任何延迟。两者的工作原理完全相同。
-
请看我的OP,我提到这与设备和角度触摸模块@VVK有关
-
ngTouch 替换了 ngClick 指令,并且 nothing 使用 'click' 事件,这就是延迟存在的原因。
标签: javascript jquery angularjs events jquery-events