簡體   English   中英

Angular-當鼠標不在按鈕上方時,在按鈕mouseup上實現事件處理程序

[英]Angular - Implementing event handler on button mouseup when mouse is not over the button

我想實現一鍵通按鈕,當我按下鼠標時啟用語音,而當我釋放鼠標時禁用語音。 這是我現在擁有的代碼:

    <button ng-mousedown="enablePushToTalk()" ng-mouseup="disablePushToTalk()" class="btn"> PushToTalk </button>

問題場景是這樣的:

  1. 用戶點擊按鍵通話按鈕(mouseDown:調用enablePushToTalk)
  2. 用戶將鼠標從按鈕移開
  3. 用戶釋放mouse:永遠不會調用mouseUp事件,因此永遠不會調用disablePushToTalk! 因此,一鍵通保持啟用狀態。

這是一個gif:

越野車行為

如何確保每次調用“ enablePushToTalk”時都調用“ disablePushToTalk”?

如何將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,控制台,輸出

解決方案2:

僅將ng-mouseup事件添加到父元素而不添加on button

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM