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

如何动态引用元素的动态生成ID?附AngularJS代码示例

解决AngularJS ng-repeat中动态生成折叠面板ID的问题

嘿,我看你现在的代码里所有折叠按钮都指向同一个#div1,这肯定会导致不管点哪个面板,都会触发同一个折叠区域对吧?别担心,我们只需要给每个循环生成的面板配上唯一的动态ID就能解决这个问题,步骤很简单:

具体修改步骤

  • 第一步:利用循环索引或对象唯一属性生成动态ID
    AngularJS的ng-repeat自带了$index变量,它代表当前循环项的索引(从0开始),我们可以用它来生成唯一ID。如果你的tda对象本身有唯一标识(比如idTipoDato这类字段),用它会比$index更可靠,因为索引会随着数据顺序变化而改变,而对象的唯一ID是固定的。

  • 第二步:同步修改折叠按钮的href和内容区域的id
    把原来固定的href="#div1"改成动态绑定的格式,同时给每个折叠内容区域加上对应的id,确保按钮和内容区域一一对应。

修改后的完整代码

<div class="col-lg-12" data-ng-repeat="tda in allTipoDatosAlimentos">
  <div class="box dark">
    <header>
      <div class="icons"><i class="icon-edit"></i></div>
      <h5>
        <!-- 用$index生成动态href -->
        <a class="accordion-toggle minimize-box" data-toggle="collapse" href="#div-{{$index}}">
          {{tda.nombreTipoDato}}
        </a>
      </h5>
      <div class="toolbar">
        <ul class="nav">
          <li>
            <!-- 这里的href也要同步修改 -->
            <a class="accordion-toggle minimize-box" data-toggle="collapse" href="#div-{{$index}}">
              &...
            </a>
          </li>
        </ul>
      </div>
    </header>
    <!-- 折叠内容区域,设置对应的动态id -->
    <div id="div-{{$index}}" class="collapse in">
      <div class="body">
        <!-- 这里放该面板的具体内容,比如tda的其他属性 -->
        示例内容:{{tda.descripcion}}
      </div>
    </div>
  </div>
</div>

额外提示

如果你的tda对象有唯一ID字段(比如idTipoDato),建议替换成这种写法,稳定性更好:

<!-- 按钮的href -->
href="#div-{{tda.idTipoDato}}"
<!-- 内容区域的id -->
id="div-{{tda.idTipoDato}}"

这样每个折叠面板就只会控制自己对应的内容区域啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:36:31