Я хочу использовать кнопку Push To Talk, которая позволяет голосу при нажатии мыши и отключает голос при отпускании мыши. Вот код, который у меня есть прямо сейчас:
<button ng-mousedown="enablePushToTalk()" ng-mouseup="disablePushToTalk()" class="btn"> PushToTalk </button>
Сценарий проблемы следующий:
Здесь gif:
Как я могу гарантировать, что "disablePushToTalk" вызывается для каждого вызова "enablePushToTalk"?
Как насчет добавления прослушивателя событий ng-mouseup
в родительский элемент?
Создал jsBin, используя вышеприведенную идею для вашей проблемы.
Решение 1:
//HTML
<body style='height:500px;border:1px solid black;' ng-controller="MyCtrl" ng-mouseup='disable()'>
<div >
<button ng-mousedown="enablePushToTalk()" ng-mouseup="disablePushToTalk()" class="btn"> PushToTalk </button>
</div>
</body>
//JS
function MyCtrl($scope) {
$scope.name = 'Superhero';
var isMouseUp = false;
$scope.enablePushToTalk = function(){console.log('mouseup');isMouseUp=true;}
$scope.disablePushToTalk = function(){console.log('mousedown');isMouseUp=false;}
$scope.disable = function(){if(!isMouseUp) return;console.log('mousedown from body');isMouseUp=false;}
}
Ссылка jsBin: http://jsbin.com/nedijudaga/edit?html,js,console,output
Решение 2:
Добавление события ng-mouseup
только к родительскому элементу, а не к button
сделало бы трюк.