>我有一个ng-repeat,它可以在表格中生成项目列表, 每个项目的行中都有一个按钮,该按钮将打开一个弹出框(用于编辑对象(。
重要的是,我不要使用引导弹出框的click-outside
属性,因为此弹出框必须仅使用其中的按钮关闭。
因此,在具有 ng-repeat 的<div>
上声明弹出窗口的 HTML 代码中,我们有以下代码:
<div class="popoverX" popover-class="popoverCustom"
popover-append-to-body="true" popover-placement="bottom-left"
popover-is-open="vm.isEditPopoverOpen"
uib-popover-template="'Views/xxx/popTemplate.htm'">
在控制器中,这是定义的:
isEditPopoverOpen: boolean;
我们在弹出窗口中拥有的关闭功能是:
closePopover() {
this.loading = false;
this.isEditPopoverOpen= false;
}
因此,当我们在 ng-repeat 中只返回一个项目时,一切正常,但 OFC 并非如此,所以目前,当您单击打开弹出窗口的行div
时,每行的每个弹出窗口都会打开。
我明白为什么会发生这种情况,因为我使用相同的布尔值, 但是解决方案是什么呢?
我需要这个结构来保持,所以弹出窗口必须只用一个按钮关闭, 我想避免在 ng-repeat 中循环的数组中的对象上添加一个新属性,例如 :isOpened: boolean
,然后将其用于打开/关闭。
如果有任何其他解决方案,我将很高兴听到他们!
如果你真的不想在对象上分配新的属性,你可以像这样保留一个单独的打开/关闭的弹出框数组;
vm.openedPopovers = [];
在您的标记中,您可以像这样访问中继器中的$index
;
<div class="popoverX" popover-class="popoverCustom"
popover-append-to-body="true" popover-placement="bottom-left"
popover-is-open="vm.openedPopovers[$index]"
uib-popover-template="'Views/xxx/popTemplate.htm'">