我想添加點擊處理程序到ng-focus
回調,以開始收聽所有未來的點擊事件。但是,當點擊發起焦點時,點擊處理程序也會立即觸發。我可以用$timeout
來解決這個問題,但這是一種破解,它違背了我所代表的一切。我成了什麼?!Angular.js中焦點事件的單獨點擊事件
我的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')
};
我想下面的工作,但問題是,點擊回叫立即觸發。如您所料,如果我將標籤添加到此字段,則不會調用點擊回叫。但是如果焦點事件由點擊觸發,則hideHistory
被調用。
scope.inputFocus = function (e) {
scope.displayHistory = true;
$document.on('click', hideHistory);
};
我打過電話e.stopPropagation()
和e.stopImmediatePropagation()
但這些方法都不能有效無論是。
在點擊函數中設置布爾值以檢查焦點是否被觸發,然後只有在焦點等於true時才運行click函數。 – mrdeleon