NOVINKA: Pracuj až o 60 % rychleji díky akreditovanému kurzu Specialista na AI. Nyní již od 0 Kč. Zjisti více:
NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

Diskuze – Lekce 1 - Úvod do AngularJS

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
fb612
Člen
Avatar
fb612:2.2.2014 21:02

hezký článek.

zajímala by mě varianta ukládat objekty aplikace v json formátu a možnost je pak i upravovat.

Odpovědět
2.2.2014 21:02
Časně do postele a časně z postele vede člověka ke zdraví, moudrosti a bohatství. -Franklin, Benjamin
Avatar
Odpovídá na fb612
Drahomír Hanák:2.2.2014 21:36

Jsem rád, že se článek líbí.

JavaScriptová resp. JSON uložiště jsou nad rámec článků o Angularu, ale třeba se k nim také dostanu. Možností ukládat data v prohlížeči je hned několik: už zmíněný local storage, IndexedDB nebo WebSQL. Z nich přímo podporuje JSON jen IndexedDB. JSON se ale dá v textové podobě uložit v podstatě kamkoli. Záleží na požadavcích, které mám na uložiště/databázi.

Co se týče klasických serverových databází, z vlastní zkušenosti můžu doporučit třeba objektovou databázi MongoDB. Dál například CouchDB. Jako formát také používají JSON a komunikace s těmito databázemi je možná pomocí nějakého Web API (HTTP) nebo přes WebSockets. CouchDB má třeba jako komunikační rozhraní právě Web API, takže je na tohle docela vhodná. Zatím jsem ji ale nezkoušel v reálné aplikace.

JSON se stává na webu de facto standard (podobně jako dřív XML), takže databází a uložišť, která používají JSON, je opravdu hodně. Jen si správně vybrat :)

 
Odpovědět
2.2.2014 21:36
Avatar
fb612
Člen
Avatar
fb612:2.2.2014 22:04

dekuji, zkusim mongoDB

Odpovědět
2.2.2014 22:04
Časně do postele a časně z postele vede člověka ke zdraví, moudrosti a bohatství. -Franklin, Benjamin
Avatar
kuba.vaclavik:3.7.2014 22:47

Ahoj, je možné řadit podobně jako objekt i pole?
Zde je kousek kodu jak jsem se o řazení pole pokoušel:

*.js
function mealCtrl($scope) {
$scope.myMeal = ["skopovy","jeh­neci","hovezi","sli­mejsi"];
}

*.html
<div ng-controller="me­alCtrl">
<ul>
<li ng-click="orderProp='my­Meal';reverse = !reverse">SORT</li>
<li ng-repeat="meal in myMeal | orderBy:order­Prop:reverse">{{me­al}}</li>
</ul>
</div>

Takto to neběží. Ví někdo jak setřídit pole?

Odpovědět
3.7.2014 22:47
Prokrastinací k extrémním výkonům
Avatar
Odpovídá na kuba.vaclavik
Drahomír Hanák:3.7.2014 23:22

S polem je to trochu jiné. Filtru orderBy můžeš předat funkci, podle které bude angular pole řadit. Jako parametr dostane prvek z toho pole a vrátí číslo, podle kterého pak angular prvek zařadí (použije operátory >, <, =). Funguje to asi takto (pseudokód, kde fn je tvoje funkce):

hodnotaA = fn(a);
hodnotaB = fn(b);
if (hodnotaA > hodnotaB) prohod(a, b);

V kontroleru teda definuješ funkci, podle které se bude pole řadit:

$scope.naivniRazeniTextu = function(prvek) { return prvek; };

A pak v šabloně použiješ místo orderProp, naivniRazeniTextu (naivní protože nebere v potaz diakritiku)

<li ng-repeat="meal in myMeal | orderBy:naiveSort">{{ meal }}</li>
 
Odpovědět
3.7.2014 23:22
Avatar
Odpovídá na Drahomír Hanák
kuba.vaclavik:4.7.2014 0:20

A jak to řazeni spustim?
<li ng-click=" ..? ">SERADIT</li>

Editováno 4.7.2014 0:21
Odpovědět
4.7.2014 0:20
Prokrastinací k extrémním výkonům
Avatar
Odpovídá na kuba.vaclavik
Drahomír Hanák:4.7.2014 10:09

Můžeš si uložit referenci na funkci do nějaké proměnné a předat filtru orderBy tu proměnnou.

// kontroller
$scope.razeni = angular.noop;
$scope.seraditPodle = function(funkce) {
    $scope.razeni = funkce == null ? angular.noop : funkce;
};
$scope.abecedniRazeni = function(prvek) { return String(prvek); };

// šablona
<button ng-click="seraditPodle(abecedniRazeni)">řadit podle abecedy</button>
<ul>
  <li ng-repeat="meal in myMeal | orderBy:razeni">...</li>
</ul>

angular.noop je funkce, která nic neudělá (angular.noop = function(){};)

 
Odpovědět
4.7.2014 10:09
Avatar
roman.kratochvil:26.10.2016 15:42

Uvedený příklad nefunguje v IE ani v Edge, funguje v Chrome....

 
Odpovědět
26.10.2016 15:42
Avatar
Odpovídá na roman.kratochvil
Marian Benčat:26.10.2016 17:29

co konkretne?

Odpovědět
26.10.2016 17:29
Totalitní admini..
Avatar
roman.kratochvil:27.10.2016 8:46

Nefunguje ten grid (ten seznam), vypadá to, že to je kolem ng-repeat....

Chci sem vložit screeny, ale nevím jak, dole dám vybrat soubory a nic.....

Editováno 27.10.2016 8:49
 
Odpovědět
27.10.2016 8:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 27.