AngularJS - bootstrap popover,如何在 ng-repeat 中正确使用 "popover-is-open"
AngularJS - bootstrap popover, how to use correctly "popover-is-open" in a ng-repeat
我有一个 ng-repeat 生成 table 中的项目列表,
每个项目在其行中都有一个按钮,该按钮会打开一个弹出窗口(以编辑对象)。
重要的是我不使用:bootstrap 弹出窗口的 click-outside
属性,因为此弹出窗口必须仅使用其中的按钮关闭。
所以在 html 代码中,弹出窗口在具有 ng-repeat 的 <div>
上声明,我们有以下代码:
<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 中只返回一个项目时一切正常,但事实并非如此,所以目前,当您单击打开弹出窗口的行 div
时,每行的每个弹出窗口都会打开。
我明白为什么会这样,因为我使用的是相同的布尔值,
但是那有什么解决办法呢?
我需要保留这个结构,所以弹出窗口必须只用一个按钮关闭,
我想避免在 ng-repeat 中循环的数组中的对象上添加一个新的 属性,例如:isOpened: boolean
,然后将其用于 open/close .
如果有任何其他解决方案,我很乐意听取他们的意见!
如果您真的不想为您的对象分配新属性,您可以像这样保留一个单独的 opened/closed 弹出窗口数组;
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'">
我有一个 ng-repeat 生成 table 中的项目列表, 每个项目在其行中都有一个按钮,该按钮会打开一个弹出窗口(以编辑对象)。
重要的是我不使用:bootstrap 弹出窗口的 click-outside
属性,因为此弹出窗口必须仅使用其中的按钮关闭。
所以在 html 代码中,弹出窗口在具有 ng-repeat 的 <div>
上声明,我们有以下代码:
<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 中只返回一个项目时一切正常,但事实并非如此,所以目前,当您单击打开弹出窗口的行 div
时,每行的每个弹出窗口都会打开。
我明白为什么会这样,因为我使用的是相同的布尔值, 但是那有什么解决办法呢?
我需要保留这个结构,所以弹出窗口必须只用一个按钮关闭,
我想避免在 ng-repeat 中循环的数组中的对象上添加一个新的 属性,例如:isOpened: boolean
,然后将其用于 open/close .
如果有任何其他解决方案,我很乐意听取他们的意见!
如果您真的不想为您的对象分配新属性,您可以像这样保留一个单独的 opened/closed 弹出窗口数组;
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'">