当我单击一个按钮时,它会出现一个弹出框,如果您单击弹出框内的按钮,它可以关闭。但是,如果您单击另一个按钮打开一个弹出框,您将同时看到两个弹出框,我只想保留一个。
我已经尝试使用触发器“焦点”,但是如果我单击弹出框内的文本区域,它会关闭弹出框,我预计当您在弹出框外部单击时会调用此触发器。
有什么想法吗?可以从控制器调用方法 $hide、$show 吗?
当我单击一个按钮时,它会出现一个弹出框,如果您单击弹出框内的按钮,它可以关闭。但是,如果您单击另一个按钮打开一个弹出框,您将同时看到两个弹出框,我只想保留一个。
我已经尝试使用触发器“焦点”,但是如果我单击弹出框内的文本区域,它会关闭弹出框,我预计当您在弹出框外部单击时会调用此触发器。
有什么想法吗?可以从控制器调用方法 $hide、$show 吗?
尝试添加ng-click="$hide()"
弹出框的可关闭元素。IE:
<a class="btn btn-primary" ng-click="$hide()">Close</a>
它不包含在文档中,但它适用于我,如果您使用数据模板作为弹出框内容,尚未尝试使用其他打开的弹出框。
这应该是一个老问题,在最新版本的 angular-strap 中,可以在这种情况下使用一个新属性:
auto-close='1'
好的,我很确定这是一个可怕的 hack,但是这里有。假设你的 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
angular-strap github 项目中有一个问题,它准确地询问了您想要的功能。
尽管如此,在我写这个答案的那一刻,它仍然是开放的。
trigger : 'focus' ,
在同一个问题上为我工作