Dzisiaj zrobimy coś bardziej praktycznego. Teoria dla wielu osób przeważnie jest nudna (w tym i dla mnie) ?. Dlatego dziś zrobimy coś bardziej praktycznego.
Mini projekt, który chce zrealizować w tej lekcji to sortowanie danych z tablicy. Używając określenia tablica mam na myśli uproszczone wersję bezy danych. Prostą tabelę z informacjami.
Moja tablica dla prostoty będzie składać się tylko z 2 kolumn i 4 wierszy. Najprościej zobrazuję to na przykładzie tabeli:
| Imię | Nazwisko |
|---|---|
| Jan | Kowalski |
| Anna | Nowak |
| Maria | Kowal |
| Tomasz | Nowicki |
Dla ułatwienia dodałam 5 wiersz z nagłówkiem. Czyli już wiecie, że będę operowała danymi Imię i Nazwisko (dla wyrobienia dobrych nawyków lepiej używać angielskich nazw pól). Na początku dla osób, które nigdy nie pracowały z obiektami takimi jak baza danych może to się wydać nieco dziwne.
Dane możemy zapisać na kilka sposobów. W tym konkretnym przypadku skorzystamy z ng-init:
ng-init="names=[
{name:'Jan',surname:'Kowalski'},
{name:'Anna',surname:'Nowak'},
{name:'Maria',surname:'Kowal'},
{name:'Tomasz',surname:'Nowicki'}]" Jak widzicie nie jest to jakoś specjalnie skomplikowane. Każdy wiersz znajduje się pomiędzy klamrami {} następnie podajemy nazwę pola oraz w cudzysłowie wartość. Nazwy pul z wartościami udzielamy przecinkami. Nasza tablica nosi też nazwą „names”
Wypisywanie pojedynczych ciągów wyrazów do trudnych nie należy, ale jak wypisać tabelę?
W tym wypadku przyda się nam operator/detektywa ng-repeat. Z jej pomocą będziemy mogli wypisać nasze dane, jednak najpierw trzeba ją będzie skonfigurować.
W tym celu deklarujemy: ng-repeat=”x in names” – struktura jest analogiczna jak w innych pętlach.
Powyższy kod stworzy pętlę, która zakończy się w momencie gdy zabraknie elementów tablicy.
<div ng-app="" ng-init="names=[
{name:'Jan',surname:'Kowalski'},
{name:'Anna',surname:'Nowak'},
{name:'Maria',surname:'Kowal'},
{name:'Tomasz',surname:'Nowicki'}]">
<p>Looping with objects:</p>
<ul>
<li ng-repeat="x in names">
{{ x.name + ', ' + x.surname}}</li>
</ul>
</div> Po złożeniu wygląda to tak:
No dobrze posiadamy już listę, ale co z jej sortowaniem? I jak uzyskać wygląd tabeli?
Teraz wprowadzimy zmiany w strukturze naszej aplikacji. Pierwszą poważną będzie przeniesienie naszych danych do modułu. Jak zbudować prosty moduł napisałam w poprzedniej lekcji.
<script>
angular.module('myApp', []).controller('namesCtrl', function($scope) {
$scope.names = [
{name:'Jan',surname:'Kowalski'},
{name:'Anna',surname:'Nowak'},
{name:'Maria',surname:'Kowal'},
{name:'Tomasz',surname:'Nowicki'}
];
$scope.orderByMe = function(x) {
$scope.myOrderBy = x;
}
});
</script> Jak widać wszystkie nasze elementy zostały przeniesione do elementu $scope.names. Od tej chwili to na nim „będziemy wykonywać operację”.
Kod HTML w tym wypadku będzie wyglądał następująco:
<div ng-app="myApp" ng-controller="namesCtrl" class="conteiner">
<table border="1" width="100%">
<tr>
<th ng-click="orderByMe('name')">Name</th>
<th ng-click="orderByMe('surname')">Surname</th>
</tr>
<tr ng-repeat="x in names | orderBy:myOrderBy">
<td>{{x.name}}</td>
<td>{{x.surname}}</td>
</tr>
</table>
</div> W znaczniku ng-app wywołujemy modół myApp.
Poniżej możecie zobaczyć efekt końcowy (trochę go pokolorowałam ?).
See the Pen Order by by Aura (@Julka85) on CodePen.
Zadanie domowe dla chętnych: Zbuduj prosty mechanizm filtrujący dane tabeli lub listy składającej się z minimum 5 wierszy i 3/4 kolumn. ?
Jak w przypadku wielu różnych tematów tak i w przypadku marki osobistej pojawiło się przez…
Choć zabrzmi to może nieco dziwnie to wprowadzenie AI (sztucznej inteligencji) do naszego życia było…
Widmo Brockenu to dość rzadko spotykane zjawisko optyczne, najczęściej widywane w wysokich partiach gór. Można…
Zacznę może od tego, że relikwia, relikwii nie równa. Wiem jeśli nie ma się pojęcia…
Logo stanowi jeden z ważniejszych elementów tożsamości wizualnej praktycznie każdej firmy, marki czy projektu. Logo…
Budując własną markę osobistą lub chcąc ją zbudować trzeba liczyć się z wieloma wyzwaniami. Jednym…