我搜索了问题和答案,尝试了不同的方法(例如$('#element').popover('hide')
),我仍然无法使用ESC按钮关闭Bootstrap popover。
我会(错误地)认为这应该有效
$(document).keyup(function (event) {
if (event.which === 27) {
alert( "esc");
$scope.isOpen = false;
}
});
,但事实并非如此。
我准备了a plunker。
非常感谢!
答案 0 :(得分:1)
首先,将您的逻辑移到控制器上。然后添加$scope.$apply()
以强制$digest
周期(您正在使用jQuery
这是第三方,而非角度内置机制。)
像这样:
<强>控制器强>
$(document).keyup(function (event) {
if (event.which === 27) {
$scope.isOpen = false;
$scope.$apply();
}
});
答案 1 :(得分:1)
正如阿兰所说,这与消化周期问题有关,因为角度没有检测到变化。
这是一个工作的掠夺者:http://plnkr.co/edit/M3F7dmmLBrtGdBCICdLm?p=preview
确保使用$ scope。$ digest,因为它会自动强制执行$ apply
$scope.save = function () {
$scope.isOpen = false;
$scope.$digest();
};
$(document).keyup(function (event) {
if (event.which === 27) {
$scope.save();
}
});