[英]separate click event from focus event in Angular.js
我想向ng-focus
回調添加點擊處理程序,以開始偵聽所有將來的點擊事件。 但是,當通過單擊啟動焦點時,單擊處理程序也會立即觸發。 我可以用$timeout
解決問題,但這是一個hack,它違背了我所代表的一切。 我變成了什么?
我的HTML:
<input type="text" name="q" ng-focus="inputFocus($event)" />
這個.js 可以工作 (這在指令的鏈接函數內部):
scope.inputFocus = function (e) {
scope.displayHistory = true;
$timeout(function () {
$document.on('click', hideHistory);
}, 200)
};
function hideHistory() {
scope.displayHistory = false;
scope.$digest();
$document.off('click')
};
我希望執行以下操作,但是問題是click回調會立即觸發。 如您所料,如果我跳至該字段,則不會調用click回調。 但是,如果焦點事件是通過單擊觸發的, hideHistory
調用hideHistory
。
scope.inputFocus = function (e) {
scope.displayHistory = true;
$document.on('click', hideHistory);
};
我嘗試調用e.stopPropagation()
和e.stopImmediatePropagation()
但這些解決方案均無效。
您是否嘗試過e.preventDefault();
?
無論如何,您可以提供一個小提琴來確切說明正在發生的事情?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.