Javascript Angular UI引导弹出框-如何使用ESC关闭弹出框
我搜索了问题和答案,尝试了不同的方法(例如,Javascript Angular UI引导弹出框-如何使用ESC关闭弹出框,javascript,angularjs,angular-ui-bootstrap,popover,Javascript,Angularjs,Angular Ui Bootstrap,Popover,我搜索了问题和答案,尝试了不同的方法(例如,$(“#元素”).popover('hide')),但我仍然无法用ESC按钮关闭引导式popover 我(错误地)认为这应该行得通 $(document).keyup(function (event) { if (event.which === 27) { alert( "esc"); $scope.isOpen = false; } }); ,但事实并非如此 我准备好了 非常感谢 首先,将逻辑移动到控制器。然
$(“#元素”).popover('hide')
),但我仍然无法用ESC按钮关闭引导式popover
我(错误地)认为这应该行得通
$(document).keyup(function (event) {
if (event.which === 27) {
alert( "esc");
$scope.isOpen = false;
}
});
,但事实并非如此
我准备好了
非常感谢 首先,将逻辑移动到控制器。然后添加
$scope.$apply()
强制执行$digest
循环(您使用的是jQuery
,它是第三方,而不是角度内置机制)
像这样:
控制器
$(document).keyup(function (event) {
if (event.which === 27) {
$scope.isOpen = false;
$scope.$apply();
}
});
首先,将逻辑移到控制器上。然后添加
$scope.$apply()
强制执行$digest
循环(您使用的是jQuery
,它是第三方,而不是角度内置机制)
像这样:
控制器
$(document).keyup(function (event) {
if (event.which === 27) {
$scope.isOpen = false;
$scope.$apply();
}
});
正如Aran所说,这与消化周期问题有关,因为angular无法检测到变化 这是一个正在工作的plunker: 确保使用$scope.$digest,因为它将自动强制执行$apply
$scope.save = function () {
$scope.isOpen = false;
$scope.$digest();
};
$(document).keyup(function (event) {
if (event.which === 27) {
$scope.save();
}
});
正如Aran所说,这与消化周期问题有关,因为angular无法检测到变化 这是一个正在工作的plunker: 确保使用$scope.$digest,因为它将自动强制执行$apply
$scope.save = function () {
$scope.isOpen = false;
$scope.$digest();
};
$(document).keyup(function (event) {
if (event.which === 27) {
$scope.save();
}
});
是否仅在按esc键时关闭?其他关闭弹出框的方法(单击外部按钮等)正在运行。因此,在这里按esc键就足够了,谢谢。请检查plunker以查看它是否工作。ng-keypress可能是一个选项to是否只想在按esc键时关闭它?关闭弹出框的其他方法(单击外部、按钮等)正在工作。因此,在这里关闭esc键就足够了,谢谢。请检查plunker以查看它是否工作。ng-keypress可能也是一个选项