[英]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.