You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AngularJS的ng-repeat列表中每隔4行插入广告横幅?

在AngularJS的ng-repeat中每第4行后插入广告横幅

没问题,这在AngularJS里有几种实用的实现方式,我给你分享两个常用方案:

方案一:使用ng-if结合$index判断

AngularJS的ng-repeat会自动暴露一个$index变量(从0开始计数),我们可以利用它来判断是否到达第4行的位置,然后插入广告。

代码示例:

<div class="wrapper">
  <div class="content" ng-repeat="row in rows">
    {{row.someData}}
    <!-- 每第4行后显示广告 -->
    <div class="ad-banner" ng-if="($index + 1) % 4 === 0">
      这里放你的自定义广告内容
    </div>
  </div>
</div>

说明:因为$index从0开始计数,所以用$index + 1转换成从1开始的序号,当这个值对4取模等于0时,就说明当前是第4、8、12...行,此时自动渲染广告横幅。

方案二:使用ng-repeat-start和ng-repeat-end(更语义化)

如果想把数据行和广告作为一个逻辑组,或者让广告块和数据行同级,可以用ng-repeat-start和ng-repeat-end来实现,结构会更清晰:

广告与数据行同级的写法

<div class="wrapper">
  <div class="content" ng-repeat-start="row in rows">
    {{row.someData}}
  </div>
  <div class="ad-banner" ng-repeat-end ng-if="($index + 1) % 4 === 0">
    这里放你的自定义广告内容
  </div>
</div>

这种写法会让广告div和数据行div处于同一层级,每4个数据行后插入一个独立的广告块。

避免末尾多余广告的优化写法

如果你的数据总数刚好是4的倍数,上面的写法会在最后一行后多显示一条广告,这时可以加上!$last判断:

<div class="wrapper">
  <div class="content" ng-repeat-start="row in rows">
    {{row.someData}}
  </div>
  <div class="ad-banner" ng-repeat-end ng-if="($index + 1) % 4 === 0 && !$last">
    这里放你的自定义广告内容
  </div>
</div>

内容的提问来源于stack exchange,提问作者Vikas Kandari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:14:32