Angular JS - как увеличить HTML в зависимости от условия

0

Я использую угловой повтор для заполнения полей формы динамически. Существует сценарий, когда мне нужно уведомить пользователя (показать! Значок для повторяющихся полей). Ниже приведен фрагмент кода:

<div ng-init="counter = 0">
  <div ng-repeat="item in list track by $index">
    <div ng-show="{{item.show}}">{{counter+1}}</div>
  </div>
  <div ng-show="{{counter > 1}}"> ! </div>
</div>

Переменная счетчика увеличивается только в том случае, если она используется как {{counter + $ index}}, возможно ли это без индекса $?

  • 0
    счетчик = счетчик + 1?
  • 1
    ng-show="item.show"
Показать ещё 6 комментариев
Теги:

1 ответ

0
Лучший ответ

Назначение переменных внутри html официально не поддерживается.

Но всегда есть взломать то, что вы спросили:

<div ng-init="counter = 0"></div>
<div ng-repeat="n in [1,2,3,4,5]">
    <div style="display:none;">{{ n == 3 ? counter = "World!" : counter = n }}</div>
    <p>Hello {{ counter }}</p>
</div>

Обратите внимание, что я использовал не отображаемый div для условного присвоения "счетчика".

Output:
Hello 1
Hello 2
Hello World!
Hello 4
Hello 5

Ответ на 1-й комментарий: Когда счетчик == 3, мы разделим его на 2.

<div ng-init="counter = 0"></div>
<div ng-repeat="n in [1,2,3,4,5]">
    <div style="display:none;">
        {{ counter = n }}
        {{ counter == 3 ? counter = counter / 2 : counter = counter }}
    </div>
    <p>Hello {{ counter }}</p>
</div>

Output:
Hello 1
Hello 2
Hello 1.5
Hello 4
Hello 5

Ответ на 3-й комментарий:

Наконец я понял, что вы спросили. Позвольте мне изменить способ подхода, используя ng-if, чтобы сохранить запись счетчика. Я использовал ng-init для увеличения счетчика, когда n делится на 2. Вам нужно вызвать $ parent. $ Parent.counter, чтобы достигнуть исходного счетчика иначе ng-if создаст свой собственный счетчик внутри области дочернего объекта.

JSFiddle

<div ng-init="counter = 0"></div>      
<div ng-repeat="n in [2,6,5,6,8,9,11] track by $index">
    <!-- ngRepeat child scope -->
    <div ng-if="n % 2 == 0"
    ng-init="$parent.$parent.counter = $parent.$parent.counter + 1"
    style="display:none;">
      <!-- ngIf also creates a child scope -->
    </div>
</div>      
<p>Counter = {{ counter }}</p>

Output:
Counter = 4
  • 0
    Спасибо @KinoP, но это не будет служить цели. Можно ли рассчитать число, деленное на 2, на вашем примере? Если да, пожалуйста, вставьте фрагмент кода, это решит мою проблему.
  • 0
    @crmApex Я не уверен, что понимаю вашу проблему, но проверьте обновленный ответ выше. Условное выражение {{логическое? true case: false case}} довольно мощный.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню