使用 $index 在 ng-repeat 中间添加 <div> - Bootstrap 容器

Posted

技术标签:

【中文标题】使用 $index 在 ng-repeat 中间添加 <div> - Bootstrap 容器【英文标题】:Adding <div> in middle of ng-repeat using $index - Bootsrap container 【发布时间】:2016-09-01 11:27:47 【问题描述】:

我正在尝试使用$index==ng-repeat 中间输出&lt;div&gt; - 但是横幅&lt;div&gt; 在父container 内,因此它不会跨越屏幕的整个宽度。我曾尝试在横幅上使用class="container-fluid",但它使它变得更小。有什么办法可以打破父容器(仅针对那个 div,在ng-repeat 的中间)以使横幅全宽?

这就是我希望它的外观(仅出于视觉目的,需要使用 ng-repeat 输出 div):Plunker-1

这就是它目前的样子:Plunker-2

【问题讨论】:

具有 "container-fluid" 类的 正在产生对齐问题,因为它的放置左右边距。所以你可以删除这个类或者写自定义类来删除左右边距 【参考方案1】:

这里是解决方案:https://plnkr.co/edit/pYO1G8M3jIDXHrRSE4YE?p=preview


您不需要容器流体来实现您的目标。


 <div class="col-md-12" id="Banner" ng-if="$index==8">

               <div class="well well-sm text-center">
                  Banner

              </div>
 </div>

【讨论】:

谢谢 - 但这仍然只是父 container div 的边缘。我需要它来浏览整个页面 - 请参阅 Plunker-1 Plunker-1 和我的 plunker 都向我显示相同的结果。 @JamesP:明白你的意思。使用与 Agarwal 相同的技术,您可以这样做吗?先打印一组项目的前半部分,然后是横幅,然后是后半部分?【参考方案2】:

你已经接近了,试试这个:

<div id="content">
  <div class="container" ng-controller="MainController">

  <h1>Hello Plunker!</h1>

    <div ng-class="$index === 8 ? 'col-md-12' : 'col-md-3'" ng-repeat="item in Data">
      <div class="container-fluid" id="Banner" ng-if="$index === 8">
        <div class="well well-sm text-center">
          Banner
        </div>
      </div>
      <div class="well active" ng-if="$index !== 8">
        <h3>item</h3>
      </div>
    </div>
  </div>
</div>

【讨论】:

【参考方案3】:

一个像this一个怎么样?

我所做的是使.well 绝对定位,这样您就可以“绕过”正常的文档流,使.banner 变得任意长,从而使用百分比值添加额外的宽度(这样您就可以调整大小时有点流畅)。

.banner
  position: absolute;
  width: 104%;
  right: -2%;

因此,您的横幅会变宽,超过 100%(这是容器的宽度)。为了让它在中间,从右边减去一半的额外宽度(4% / 2 == 2%)(或者可以从左边加上 2%)。

问题在于响应能力,因为它会在某些断点处中断。我建议使用像 SASS 和 CSS3 calc()、MDN 这样的解决方案来解决这个问题。

【讨论】:

【参考方案4】:

<div ng-repeat="item in Data">
  <div class="col-md-12 well well-sm text-center" 
       id="Banner" 
       ng-if="$index==8">
    Banner
  </div>
  <div class="col-md-3">
    <div class="well active">
      <h3>item</h3>
    </div>
  </div>
</div>

【讨论】:

以上是关于使用 $index 在 ng-repeat 中间添加 <div> - Bootstrap 容器的主要内容,如果未能解决你的问题,请参考以下文章

使用 ng-repeat 和过滤器时数组中对象的 $index

如何在angular js中的重复中间停止ng-repeat

请小心使用 ng-repeat 中的 $index

为啥 ng-click 需要通过 $index 跟踪才能在嵌套的 ng-repeat 内触发

在嵌套的 ng-repeat 中传递 2 个 $index 值

如何用angularjs的ng-repeat实现二级导航条