Angular UI Bootstrap Popover - 如何使用ESC关闭popover

时间:2016-06-23 08:41:23

标签: javascript angularjs angular-ui-bootstrap popover

我搜索了问题和答案,尝试了不同的方法(例如$('#element').popover('hide')),我仍然无法使用ESC按钮关闭Bootstrap popover。

我会(错误地)认为这应该有效

$(document).keyup(function (event) {
    if (event.which === 27) {
      alert( "esc");
      $scope.isOpen = false;
    }
});

,但事实并非如此。

我准备了a plunker

非常感谢!

2 个答案:

答案 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();
    }
});