Ho un modello in cui voglio generare dell'HTML solo se l'elemento corrente ha alcuni campi diversi rispetto all'elemento precedente. Come posso accedere all'elemento precedente in una ng-repeat?Come ottenere l'articolo precedente in ng-repeat?
42
A
risposta
87
Si può fare qualcosa di simile
<div ng-app="test-app" ng-controller="MyController">
<ul id="contents">
<li ng-repeat="content in contents">
<div class="title">{{$index}} - {{content.title}} - {{contents[$index - 1]}}</div>
</li>
</ul>
</div>
JS
var app = angular.module('test-app', []);
app.controller('MyController', function($scope){
$scope.contents=[{
title: 'First'
}, {
title: 'Second'
}, {
title: 'Third'
}]
})
Demo: Fiddle
attenzione:$index
è per l'array di direttiva, che può essere diverso da quello della matrice ambito. Utilizzare una variabile incorporata per accedere alla matrice corretta.
<li ng-repeat="content in (correctContents = (contents | orderBy:'id'))">
{{ correctContents[$index - 1] }} is the prev element
</li>
Se si filtra o orderBy, contents[$index] != content
.
9
Un modo è quello di utilizzare l'indice $ per il targeting precedente articolo:
HTML:
<div ng-repeat="item in items">
<span>{{$index}}: </span>
<span ng-show="items[$index-1].name=='Misko'" ng-bind="item.name"></span>
</div>
JS:
app.controller('AppController',
[
'$scope',
function($scope) {
$scope.items = [
{name: 'Misko'},
{name: 'Igor'},
{name: 'Vojta'}
];
}
]
);
5
Perché non utilizzare key
da ng-repeat
? ($index
sembra difficile rispetto al key
)
<div ng-repeat="(key, item) in data">
<p>My previous item is {{ data[key-1] }}, my actual item is {{ item }}
</div>
Problemi correlati
- 1. Come ritardare ngAnimate in ngRepeat
- 2. Come ottenere l'elemento precedente?
- 3. AngularJS - come ottenere un riferimento risultato ngRepeat filtrata
- 4. Come ottenere l'url precedente in django
- 5. Raggruppamento di righe in ngrepeat
- 6. Django: ottenere l'url precedente
- 7. Come posso ottenere il mio percorso precedente?
- 8. Come ottenere l'anno precedente usando PHP
- 9. Come ottenere il nome del tag precedente?
- 10. Come ottenere l'url precedente usando PHP
- 11. Direttive personalizzate ricorsive con ngRepeat
- 12. Come posso ottenere la settimana precedente in Python?
- 13. Come ottenere l'URL precedente in JSF usando FacesContext?
- 14. Come posso ottenere il comando precedente in DrRacket?
- 15. Modifica dimensione passo per ngRepeat
- 16. Come spingere gli oggetti in AngularJS tra gli array ngRepeat
- 17. Cosa fa uguale a ngRepeat?
- 18. Errore: [ngRepeat: dupes] cosa significa?
- 19. ngRepeat Inside of Bootstrap Popover
- 20. jQuery Mobile: Ottenere l'ID della pagina precedente
- 21. Ottenere campo oggetto valore precedente hibernate JPA
- 22. Ottenere il valore precedente di ComboBox
- 23. $ indice di ngRepeat all'interno della direttiva angularjs
- 24. javascript per ottenere l'url della pagina precedente
- 25. ottenere il valore precedente dell'indice panda datetime
- 26. ngRepeat: dupes - duplicati nel ripetitore con ngrepeat nidificato e stringhe vuote
- 27. Come ottenere il valore precedente per i valori null
- 28. Come ottenere l'URL della pagina precedente utilizzando jquery
- 29. Come ottenere l'url precedente incluso il frammento hash utilizzando JavaScript?
- 30. MomentJS - Come ottenere l'ultimo giorno del mese precedente dalla data?
ma se devo filtro in ng-repeat, le collezioni avranno differenze. Qualche idea? – VadimAlekseev
@VadimAlekseev Puoi fare qualcosa come questo per fare riferimento ai tuoi dati filtrati: 'ng-repeat =" elemento in (filteredData = (data | filter: term)) "' e fare come nella risposta di @ arun-p-johny con 'filteredData [$ index-1]' invece di 'contents [$ index-1]' – jpmorin
La mia collezione è un dizionario, non posso accedere agli elementi per indice, c'è un modo per farlo? : S –