単一のコマンドを実行するために一度押すことができるボタンが必要です。しかし、ボタンを押したまま、ボタンを押し続けて複数回コマンドを実行することも可能です。js角度ボタンホールドループが失敗する
<button type="button"
class="btn btn-default"
ng-click="ChangeSetPoint('Up')"
ng-mousedown="startLoopingUp()"
ng-mouseup="stopLoopingUp()"
ng-mouseleave="stopLoopingUp()">
+
</button>
とコントローラで:種類
$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);
}
それを私は、私がこれまで持っていた何を(私はそれが問題に関連しているとは思わないが)
AngularJsを使用していますこの「方向」パラメータを使用する前の作業のsetTimeoutでarguments.calleeを使用する前に、その関数で引数を渡す方法を調べたところ、arguments.callee
の使用が推奨されませんでした(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments/callee)。それ以来、「最大呼び出しスタックサイズを超えました」というエラーが表示されます。
http://stackoverflow.com/questions/25180332/how-can-i-listen-for-a-click-and-hold-in-angularjs – CoderHawk
@ CoderHawk、私はその質問を見て、私の最初の解決策に触発しました。しかし、ディレクティブを使用することも別の方法です。 –