防止在angularJS中打开多个弹出窗口

时间:2014-03-22 14:02:57

标签: angularjs popover angular-ui-bootstrap

如何防止多个弹出窗口打开?一次只能打开一个。 请看我的朋友:http://plnkr.co/edit/MjP1AlygixXHEOC3Jd5a

在我的plunkr中,我使用jbruni更新的ui-bootstrap 0.10(他的plunkr在这里: http://plnkr.co/edit/B2wEis?p=info

当悬停在两个窗口附近时,有可能同时打开两个弹出窗口。 :(

2 个答案:

答案 0 :(得分:1)

如果您强制关闭动画,则关闭延迟似乎有效。不是一个干净的解决方案,但有点工作。你仍然有机会同时获得两个弹出窗口,因为如果有一个弹出窗口暂停关闭,则无法延迟新弹出窗口的启动。

http://plnkr.co/edit/a8XHo7FKhrqv37mWTPBk?p=info

            if ( scope.tt_animation ) {
//                transitionTimeout = $timeout(removeTooltip, 500);
                  setTimeout(function(){scope.tt_animation=false;hide();},500);
              } else if ( scope.tt_popdown ){
                vanishTimeout = $timeout(removeTooltip, 2000);
              } else {0
                removeTooltip();
              }

答案 1 :(得分:0)

我编写了一个包含弹出窗口控件的指令,并使用popover-is-open触发弹出窗口打开和关闭。

要关闭所有打开的弹出框,我在父作用域上触发自定义事件:

$scope.openPopup = function()
{
    $scope.$parent.$broadcast("multiSelectSinglePopoverInstanceEvent", {});
    $scope.isPopupOpen = !$scope.isPopupOpen;
}

在自定义弹出控件控制器中,我通过关闭popover来处理事件:

$scope.$on("multiSelectSinglePopoverInstanceEvent", function (event, args) {
    $scope.isPopupOpen = false;
});

这可能会有所帮助