Tek bir komutu yürütmek için bir kez basılabilen bir düğmeye ihtiyacım var. Ancak düğmeyi basılı tutup düğmeyi basılı tutarken komutu birden çok kez çalıştırmak da mümkün olmalıdır.js açısal düğme tutma döngüsü arızalı
<button type="button"
class="btn btn-default"
ng-click="ChangeSetPoint('Up')"
ng-mousedown="startLoopingUp()"
ng-mouseup="stopLoopingUp()"
ng-mouseleave="stopLoopingUp()">
+
</button>
ve denetleyicisi: nazik
$scope.ChangeSetPoint = function(direction){
//Stuff to actually change the setpoint
}
var looping = false;
var promis;
$scope.startLoopingUp = function(){
looping = true;
promis = setTimeout(loop('Up'),1000);
}
var loop = function(direction){
$scope.ChangeSetPoint(direction);
if(looping){
promis = setTimeout(loop(direction),300)
}
}
$scope.stopLoopingUp = function(){
looping = false;
clearTimeout(promis);
}
It ben şimdiye kadar vardı ne (Ben sorunla ilgili olduğunu düşünmüyorum rağmen)
angularjs kullanıyorum Bu 'yön' parametresini kullanmadan önce çalışma. SetTimeout içinde arguments.callee kullanılmadan önce, ancak bu işlevin bir argümanı nasıl geçeceğine baktığımda, arguments.callee
kullanımının kaldırıldığını fark ettim (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments/callee). O zamandan beri 'Maksimum çağrı yığını boyutu aşıldı' hataları alıyorum.
http://stackoverflow.com/questions/25180332/how-can-i-listen-for-a-click-and-hold-in-angularjs – CoderHawk
@ CoderHawk, bu soruyu gördüm ve ilk çözümüme ilham verdim. Ancak direktifleri kullanmak başka bir yaklaşımdır. –