AngularJS-引导弹出窗口,如何在ng-repeat中正确使用“ popover-is-open”

时间:2018-06-22 12:48:13

标签: angularjs twitter-bootstrap popover

我有一个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中仅返回单个项目时,一切工作都很好,但是情况并非如此,因此,当前,当您单击打开弹出窗口的行div时,每个弹出窗口每行都打开。

我知道为什么会这样,因为我使用的是相同的布尔值, 但是解决方案是什么?

我需要保留此结构,因此必须仅通过按钮关闭弹出窗口, 并且我想避免在ng-repeat中循环的数组对象中添加一个新属性,例如:isOpened: boolean,然后将其用于打开/关闭。

如果还有其他解决方案,我将很高兴听到他们的声音!

1 个答案:

答案 0 :(得分:1)

如果您确实不想在对象上分配新属性,则可以像这样保留一个单独的打开/关闭弹出窗口数组;

GET https://www.googleapis.com/plus/v1/people/108822296317431956650?key=XXXX

,并且在您的标记中,您可以像这样在中继器中访问vm.openedPopovers = [];

$index