单击按钮时,如果单击弹出框内的按钮,则会显示一个弹出窗口。但是,如果您单击另一个按钮打开一个弹出窗口,您将同时看到两个弹出窗口,我想只保留一个。
我已尝试使用触发器'focus',但如果我单击popover内的textarea,它会关闭popover,我预计当您在popover外部单击时会调用此触发器。
对此有何想法?可以从控制器中调用$ hide,$ show方法吗?
答案 0 :(得分:4)
尝试在弹出窗口的可忽略元素上添加ng-click="$hide()"
。即:
<a class="btn btn-primary" ng-click="$hide()">Close</a>
它没有包含在文档中,但它适用于我,如果您使用数据模板进行弹出式内容,还没有尝试使用其他打开的popover。
答案 1 :(得分:2)
这应该是一个老问题,在最新版本的angular-strap中,在这种情况下可以使用新属性:
auto-close='1'
答案 2 :(得分:1)
好的,我很确定这是一个可怕的黑客,但是这里有。假设你的popover模板全部使用popover类(如果你没有使用带有data-template属性的自定义模板,他们应该),并且他们是触发它们的按钮的兄弟(如果你没有使用容器属性,它们是),您可以将以下指令应用于弹出窗口按钮。注意:这假设弹出窗口和弹出框按钮的父元素具有唯一ID。
angular.module('yourApp.directives', []).directive('rmPopovers',
function($document,$rootScope,$timeout,$popover) {
return {
restrict: 'EA',
link : function(scope, element, attrs) {
var $element = $(element);
$element.click(function() {
$('.popover').each(function(){
var $this = $(this);
if($this.parent().attr('id') != $element.parent().attr('id'))
{
$this.scope().$hide();
}
}
);
});
}
}
}
);
然后
<button type="button" bs-popover rm-popovers [your data attribs here]>Button!</button
答案 3 :(得分:0)
有一个issue in the angular-strap github project,它会准确询问您想要的功能。
然而,在我写这个答案的那一刻,它仍然是开放的。
答案 4 :(得分:-1)
trigger : 'focus' ,
在同一个问题上为我工作