Eu tenho um conjunto de <li>
elementos.
<ul>
<li ng-class="{current: selected == 100}">
<a href ng:click="selected=100">ABC</a>
</li>
<li ng-class="{current: selected == 101}">
<a href ng:click="selected=101">DEF</a>
</li>
<li ng-class="{current: selected == $index }"
ng-repeat="x in [4,5,6,7]">
<a href ng:click="selected=$index">A{{$index}}</a>
</li>
</ul>
Quando um usuário clicar em um dos elementos de endereço acima, defina o valor de selecionado e mostre um dos <DIV>
elementos abaixo:
<div ng:show="selected == 100">100</div>
<div ng:show="selected == 101">101</div>
<div ng-repeat="x in [4,5,6,7]" ng:show="selected == $index">{{ $index }}</div>
Isso funciona para os dois primeiros casos.
- Quando o usuário clica em ABC, o primeiro
<DIV>
mostra 100 e muda de cor para vermelho. - Quando a DEF é clicada, a 101 mostra e a DEF muda para vermelho.
No entanto, ele não funciona para A0, A1, A2 e A3
- Quando um usuário clica em A0, A1, A2 ou A3, o correto não é exibido, o valor selecionado não é definido e a cor de TODAS as repetições de ng A0, A1, A2 e A3 fica vermelha.
Isso é melhor mostrado se você olhar para este Plunker:
http://plnkr.co/edit/7HMeObplaBkx5R0SntjY?p=preview
Observe que no topo eu adicionei {{ selected }}
como um auxiliar de depuração no topo. Além disso, o x in [4,5,6,7]
objetivo é simular um loop. Na vida real eu tenho isso como ng-repeat="answer in modal.data.answers"
.
Alguém sabe como eu posso configurar isso para que a li
corrente da classe seja definida no momento certo e os DIV
programas no momento certo para A0, A1, A2 e A3 <li>
e<DIV>
Como johnnyynnoj mencionou, ng-repeat cria um novo escopo. Na verdade, eu usaria uma função para definir o valor. Ver plunker
JS :
HTML :
fonte
ng:click
realmente funciona? Eu pensei que erang-click