$parent.$index не работает внутри ng-bind, но работает в 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 в ng-bind не работает

1 ответ

Решение

Бьюсь об заклад $parent на самом деле сфера, созданная ng-if,

Попробуй без ng-ifПосмотрите, работает ли это. Затем используйте $parent.$parent.$index

Что, конечно, ужасно.

Вы могли бы сделать ng-show вместо ng-if, Это все еще ужасно и оставляет неприятный сюрприз следующему разработчику, который видит этот код и пытается улучшить его, используя ng-if, Но нет $parent.$parent!

Как это сделать "правильно", это хороший вопрос.

Я бы постарался вообще не использовать $index. Есть ли какое-то удостоверение личности в device а также sensor что вы можете использовать для того же? Это может иметь дополнительное преимущество: всегда иметь одинаковое значение для данного элемента, независимо от порядка, если это важно.

Другие вопросы по тегам