$parent.$index 在 ng-bind 中不起作用,但在 DOM 中起作用

$parent.$index not working inside ng-bind but works in the DOM

我的问题是我想根据来自 2 个嵌套的 ng-repeat 指令的索引动态生成范围变量。当我在 DOM 中显示该表达式时,它工作正常但 ng-bind 内部的相同内容不起作用。 ( $index 工作但 $parent.$index 不工作) 这是我的代码:

<div class="panel panel-primary" ng-repeat="device in home.devices">
    <div class="panel-heading">
      <h3 class="panel-title pull-right">
        <a href="#settings">
            <em class="fa fa-cog"></em>
        </a>
      </h3>
        <h3 class="panel-title" ng-bind="::device.name"></h3>
    </div>
    <div class="panel-body">
          <div class="row">
            <div class="col-lg-4 text-center" ng-repeat="sensor in device.sensors">
                <div class="panel panel-default">
                    <div class="panel-body">

                        <h2 ng-if="device.type == 'bm'" ng-bind="t{{$parent.$index}}{{$index}}"></h2>
                        t{{$parent.$index}}{{$index}}
                    </div>
                </div>
            </div>
          </div>
    </div>
  </div>

图片:$parent.$index in ng-bind does not work

我敢打赌 $parent 实际上是由 ng-if 创建的范围。

在没有 ng-if 的情况下尝试一下,看看它是否有效。 然后,使用 $parent.$parent.$index

这当然很可怕。

您可以 ng-show 而不是 ng-if。它仍然很糟糕,给看到该代码并尝试使用 ng-if 改进它的下一个开发人员留下一个令人讨厌的惊喜。但是,嘿,不 $parent.$parent!

怎么做"properly",是个好问题。

我会尽量不使用 $index。 devicesensor 中是否有一些 ID 可以用于同一件事?这可能具有额外的优势,即无论顺序如何,给定项目始终具有相同的值,如果这很重要的话。