Mam szablon, w którym chcę wygenerować HTML tylko wtedy, gdy bieżący element ma kilka różnych pól od poprzedniego elementu. Jak uzyskać dostęp do poprzedniego elementu w powtórzeniu ng?Jak uzyskać poprzednią pozycję w powtórzeniu ng?
42
A
Odpowiedz
87
można zrobić coś podobnego
<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
Bądź ostrożny:$index
jest na tablicy dyrektywa, która może być inna niż tablicy zakresu. Użyj zmiennej wstawianej, aby uzyskać dostęp do właściwej tablicy.
<li ng-repeat="content in (correctContents = (contents | orderBy:'id'))">
{{ correctContents[$index - 1] }} is the prev element
</li>
Po przefiltrowaniu lub zamówieniu, contents[$index] != content
.
9
Jednym ze sposobów jest użycie indeksu $ do kierowania poprzedniego elementu:
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
Dlaczego nie używać key
z ng-repeat
? ($index
wydaje się skomplikowane w porównaniu do key
)
<div ng-repeat="(key, item) in data">
<p>My previous item is {{ data[key-1] }}, my actual item is {{ item }}
</div>
Powiązane problemy
- 1. dynamicznie dodając dyrektywy w powtórzeniu ng
- 2. Filtr przełączania kątowego w powtórzeniu ng
- 3. AngularJS: ng-show dla najwyższej wartości indeksu $ w powtórzeniu ng
- 4. Ustawienie kątowe Klasa w powtórzeniu Ng
- 5. Chcę pominąć element w powtórzeniu ng przy użyciu ng-if
- 6. Jak uzyskać poprzednią nazwę tagu?
- 7. W jaki sposób AngularJS $ obserwuje te przypadki w powtórzeniu ng?
- 8. Android uzyskać poprzednią aktywność
- 9. AngularJS - oryginalny indeks obiektu w przefiltrowanym powtórzeniu ng
- 10. Jak uzyskać pozycję kliknięcia?
- 11. Jak uzyskać pozycję okna?
- 12. Jak uzyskać poprzednią wartość dla wartości pustych
- 13. Jak uzyskać poprzednią wersję pliku z libgit2sharp
- 14. Jak uzyskać aktualną pozycję karetki?
- 15. Jak uzyskać pozycję elementu potomnego
- 16. Jak uzyskać właściwą pozycję elementu?
- 17. Jak uzyskać pozycję kursora w obszarze tekstowym?
- 18. Jak uzyskać pozycję klucza w tablicy
- 19. Jak uzyskać pozycję elementu w interfejsie UIWebView?
- 20. Jak uzyskać pozycję dokumentu w WebView?
- 21. Jak uzyskać pozycję textcursora w QWebView Edytowalny
- 22. Jak uzyskać pozycję kursora w zaćmieniu TextEditor
- 23. Jak uzyskać aktualną pozycję obrazu w jQuery?
- 24. jak uzyskać pozycję kliknięcia w onClickListener?
- 25. Jak uzyskać pozycję podglądu w CAShapeLayer?
- 26. Rakieta - jak uzyskać "poprzednią wykonaną komendę" w skrypcie basha?
- 27. Jak uzyskać poprzednią stronę obiektów listy w Amazon S3
- 28. onMouseMove uzyskać pozycję myszy
- 29. uzyskać pozycję kursora terminalowego
- 30. Jak zapobiec powtórzeniu w funkcji jQuery?
Ale jeśli mam filtr w NG-repeat, zbiory będą miały różnice. Jakieś pomysły? – VadimAlekseev
@VadimAlekseev Możesz zrobić coś takiego, aby odwołać się do filtrowanych danych: 'ng-repeat =" element w (filteredData = (data | filter: term)) "i lubię w odpowiedzi @ arun-p-johny z 'filteredData [$ index-1]' zamiast 'contents [$ index-1]' – jpmorin
Moja kolekcja jest słownikiem, nie mogę uzyskać dostępu do elementów według indeksu, czy jest jakiś sposób to zrobić? : S –