Как и все в AngularJS, есть несколько способов сделать это, но вот достойное решение, использующее $interval
, ng-mousedown
и ng-mouseup
Идея состоит в том, чтобы установить интервал, который будет продолжать вещание на мышинажимайте (ng-mousedown
) каждые 0,5 секунды, пока не отпустите кнопку (ng-mouseup
), где вы очистите свой интервал.
HTML:
<button ng-mousedown="broadcastStuff()" ng-mouseup="stopBroadcasting()">
Test
</button>
<h3>
{{ h2test }}
</h3>
JS:
const broadcastDate = () => {
$scope.$broadcast('scaleUp', new Date());
};
$scope.$on('scaleUp', (event, newVal)=>{
$scope.h2test = newVal;
})
$scope.broadcastStuff = () => {
$scope.stopInterval = $interval(broadcastDate, 500);
}
$scope.stopBroadcasting = () => {
$interval.cancel($scope.stopInterval);
};
Я создал скрипку для вас:
https://jsfiddle.net/pegla/n7s1c9u0/1/