简体   繁体   English

单击任何其他工具提示时,将禁用打开的uib-tooltip

[英]Disaible open uib-tooltip when any other tooltip is clicked

I am trying to create 3 tooltips in a page, Its not working , only one tooltip should be open on click anyother tooltip should be closed. 我正在尝试在页面中创建3个工具提示,它不起作用,单击时只能打开一个工具提示,其他任何工具提示都应关闭。

 angular.module('ui.bootstrap.demo', ['ngAnimate', 'ui.bootstrap']);
angular.module('ui.bootstrap.demo').controller('TooltipDemoCtrl', function ($scope, $sce) {
$scope.tooltip = {
            1: false,
            2: false,
            3: false
        };

$scope.tooltipCloseActive = function(activeTooltip) {
            console.log($scope.tooltip);

            _.set($scope.tooltip, activeTooltip, true);
            _.forOwn($scope.tooltip, function(value, key) {
                console.log(value+'*************'+key);
                if(activeTooltip !== key && value === true){
                    console.log('#'+key);
                    _.set($scope.tooltip, key, false);
                    $scope.triggerClickOnTooltip(key);
                    console.log(key);
                }
            });
        };

        $scope.triggerClickOnTooltip = function(id) {
            setTimeout( function(){

                angular.element(document.querySelectorAll('#'+id)).trigger('click');
            }, 100);
        };


});

HTML: HTML:

<div class="col-xs-10 col-sm-4">

                <p id="1" tooltip-trigger="click"
                   uib-tooltip="I am a tooltip 1." ng-click="tooltipCloseActive('1');">

                    <span>tooltip 1:</span>
                </p>
         <br>
                <p id="2"   tooltip-trigger="click"
                   uib-tooltip="I am a tooltip 2." ng-click="tooltipCloseActive('2')">

                    <span >tooltip 2:</span>
                </p>
        <br>
                <p id="3" tooltip-trigger="click"
                   uib-tooltip="I am a tooltip 3." ng-click="tooltipCloseActive('3')">

                    <span>tooltip 3:</span>
                </p>
       <br>
            </div>

I have written code for multiple ui tooltips and want to close other tooltips when one of the tooltip is clicked. 我已经为多个ui工具提示编写了代码,并且想要在单击其中一个工具提示时关闭其他工具提示。

It is going into infinite loop so when I am triggering click . 它将进入无限循环,因此当我触发click时。

Just want to know how to make it work : 只想知道如何使其工作:

Possible Solution : 1) Differentiating the user click and trigger click : I was not able to differentiate (I know how we can do in jquery but not in angular) 可能的解决方案:1)区分用户点击和触发点击:我无法区分(我知道我们如何在jquery中做到,但不能在角度上做到)

2) Use tooltip flags ( which I did it didn't work) 2)使用工具提示标志(我没有用)

3) Upgrading ui bootstrap and use outsideClick (Which I cant afford doing in our application right now) 3)升级ui引导程序并使用outsideClick(我现在负担不起在我们的应用程序中进行的操作)

Is there any way I can solve this mystery of enable only one tooltip at a time. 我有什么办法可以解决一次仅启用一个工具提示的神秘问题。

Any help would be greatly appreciated. 任何帮助将不胜感激。

PLUNKER : http://plnkr.co/edit/mjqGa26auDSY2G8ThAk4?p=preview 入侵者: http ://plnkr.co/edit/mjqGa26auDSY2G8ThAk4?p=preview

I think I was over thinking on trigger : 我想我是在考虑触发器的:

I have used is-open with wrong format due to which I was not able to get the 由于使用了错误格式的is-open,因此无法获取

Working plunker using mutliple tooltips and enabling using tooltip-is-open http://plnkr.co/edit/gKqdoA3qK74XD1r9b5PR?p=info 使用多种工具提示来工作的插件,并使用工具提示来打开http://plnkr.co/edit/gKqdoA3qK74XD1r9b5PR?p=info

HTML: HTML:

Tooltip Text 工具提示文字

  <br/> Toggle value: {{ tooltip.isTTOpen }}
</div>
<br/>
<br/>
<br/>
<br/>
<span tooltip-template="'myTooltipTemplate.html'" tooltip-trigger="none" tooltip-is-open="tooltip.isTTOpen2" tooltip-placement="top" ng-click="closeTooltip('isTTOpen2')">Tooltip Text</span>

<br/> Toggle value: {{ tooltip.isTTOpen2 }}
<br/>
<br/>
<br/>
<br/>
<span tooltip-template="'myTooltipTemplate.html'" tooltip-trigger="none" tooltip-is-open="tooltip.isTTOpen3" tooltip-placement="top" ng-click="closeTooltip('isTTOpen3')">Tooltip Text</span>

<br/> Toggle value: {{ tooltip.isTTOpen3 }}

JS: JS:

$scope.tooltip = {
    isTTOpen: false,
    isTTOpen2: false,
    isTTOpen3: false
  };

  $scope.closeTooltip = function(tooltip) {
    console.log(tooltip);
    for (var key in $scope.tooltip) {
      if ($scope.tooltip.hasOwnProperty(key)) {
        console.log(key + " -> " + $scope.tooltip[key]);
        if (tooltip === key) {
          $scope.tooltip[key] = true;
        } else {
          $scope.tooltip[key] = false;
        }
      }
    }
  };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM