【问题标题】:$parent.$index not working inside ng-bind but works in the DOM$parent.$index 在 ng-bind 中不起作用,但在 DOM 中起作用
【发布时间】:2015-10-08 21:23:49
【问题描述】:

我的问题是我想根据 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

【问题讨论】:

    标签: angularjs indexing parent ng-repeat ng-bind


    【解决方案1】:

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

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

    当然,这很可怕。

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

    如何“正确”地做到这一点,是个好问题。

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

    【讨论】:

    • 是的,这就是问题所在。我知道这不是最好的代码,但它需要达到目的,直到我有更多时间找到更好的解决方案。
    猜你喜欢
    • 2015-02-24
    • 1970-01-01
    • 2018-01-20
    • 2015-09-04
    • 1970-01-01
    • 2015-12-05
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多