Ошибка при использовании ng-switch-default [duplicate]

Вы можете либо использовать итератор прямо так, как вы упомянули, либо сохранить вторую коллекцию и добавить каждый элемент, который хотите удалить, в новую коллекцию, а затем удалитьAll в конце. Это позволяет вам использовать безопасность типа для каждого цикла за счет увеличения использования памяти и времени процессора (не должно быть огромной проблемой, если у вас нет действительно больших списков или действительно старого компьютера)

public static void main(String[] args)
{
    Collection<Integer> l = new ArrayList<Integer>();
    Collection<Integer> itemsToRemove = new ArrayList<Integer>();
    for (int i=0; i < 10; ++i) {
    l.add(new Integer(4));
    l.add(new Integer(5));
    l.add(new Integer(6));
    }
    for (Integer i : l)
    {
        if (i.intValue() == 5)
            itemsToRemove.add(i);
    }

    l.removeAll(itemsToRemove);
    System.out.println(l);
}
11
задан Kevin 15 March 2013 в 14:47
поделиться

1 ответ

Он «преднамерен», поскольку он является продуктом того, как угловые ручки ng-repeat. По сути, клонируются множественные копии разметки (разметка внутри ng-repeat используется в качестве шаблона) и скомпилируются отдельно для каждого элемента, который вы выполняете. Таким образом, угловая составляющая в основном компилирует 3 <li ng-switch-when='1' ....> и 3 <li ng-switch-default ....>, но делает это вне контекста - нет элемента ng-switch-on для сравнения.

Вы можете видеть, что это происходит проверяя полученную разметку:

<ul ng-switch="" on="toggle">  
  <!-- ngRepeat: entry in array -->
  <!-- ngSwitchWhen: 1 -->
  <!-- ngSwitchWhen: 1 -->
  <!-- ngSwitchWhen: 1 -->
  <!-- ngRepeat: entry in array -->
  <!-- ngSwitchDefault:  -->
  <!-- ngSwitchDefault:  -->
  <!-- ngSwitchDefault:  -->        
</ul>

Обе директивы - ng-repeat и ng-switch - должны обрабатываться с осторожностью, поскольку они (в отличие, например, ng-show или ng-hide) сильно влияют состав. Второй (рабочий) Plunker - это путь, который работает только с директивами ПОСЛЕ (структурно, INSIDE) логики ng-switch.

17
ответ дан Tiago Roldão 18 August 2018 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: