Upload
jaan-sild
View
212
Download
0
Embed Size (px)
Citation preview
8/15/2019 AngularJS by Sander Leetus
1/28
Tallinna Ülikool
Digitehnoloogiate Insituut
AngularJS raamistiku õppematerjal
Seminaritöö
Autor: Sander Leetus
Juhendaja: Jaagup Kippar
Tallinn 20 !
8/15/2019 AngularJS by Sander Leetus
2/28
Autorideklaratsioon
Deklareerin" et k#esole$ seminaritöö on minu töö tulemus ja seda ei ole kellegi teise poolt $arem
kaitsmisele esitatud% K&ik töö koostamisel kasutatud teiste autorite tööd" olulised seisukohad"
kirjandusallikatest ja mujalt p#rine$ad andmed on $iidatud%
%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%'kuup#e$( 'autor(
8/15/2019 AngularJS by Sander Leetus
3/28
Sisukord
Sissejuhatus%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Angulari &petused%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Angulari dokumentatsioon%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 *+s,hools%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ Tutorialspoint%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 Angular%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2% A$aldised%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2%2 Andmete sidumine%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2%+ Direktii$id%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2%) Kontrollerid%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2%! iltrid%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2%- 1ttp%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2% Ta3elid%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2%. 4ormid%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2%/ Animatsioonid%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ Angulari komponentide kood%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+% Juhend Angulari 5lesseadmiseks%%%%%%%%%%%%%%%%%%%%%%%%%%%%+%2 A$aldised%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+%+ Andmete sidumine%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+%) Direktii$id%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+%! Kontroller%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+%- iltrid%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+% 1ttp%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+%. Ta3elid%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+%/ 4ormid%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+% 0 Animatsioonid%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
) Ülesanded%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%)% 6#itamine ja ar$utamine%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%)%2 Ta3eli n#itamine ja peitmine%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Kokku$&te%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Kasutatud kirjandus%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
8/15/2019 AngularJS by Sander Leetus
4/28
SissejuhatusK#esole$a seminaritöö eesm#rgiks on luua AngularJS 'edasipidi Angular( $ee3iraamistiku
&ppematerjal% Angular on loodud d5naamiliste $ee3irakenduste jaoks" mis mallina kasuta3
1T7Li ning $&imalda3 selle s5ntaksit laiendada $asta$alt rakenduse $ajadusele%
Autor on moti$eeritud Angulari teemal kirjutama" kuna puudu3 eesti keeles &ppematerjali
olemasolu ning looda3 suurendada sellega Angulari populaarsust%
8ppematerjal on eelk&ige loodud &pilastele" kellel puudu3 kokkupuude Angulari raamistikuga%
9elduseks &ppematerjali l#3imiseks oleksid 1T7L ja SS tundmine heal tasemel ning
Ja$aS,ripti tundmine rahulda$al tasemel%
Autori ar$ates on &ppematerjalis k&ige olulisemad Angulari komponendid" mida l#he3 $aja" etalustada Angulari rakenduse loomisega% Samuti on k&ik töös ole$ad koodin#ited 5lesse pandud"
autori poolt loodud $ee3ilehelehttp:;;***%tlu%ee;
8/15/2019 AngularJS by Sander Leetus
5/28
1 Angulari õpetused
Angulari kohta on mitmeid inglise keelseid &petusi sealhulgas ka raamatuid ja kogukonna poolt
modi=itseerituid koodilahendusi% 8ppematerjali loomise k#igus kasutan peamiselt kolme
$ee3ip&hist Angulari &petust" nendeks on Angulari oma dokumentatsioon" *+s,hools jaTutorialspoint% Angulari oma dokumentatsioon on $#ga h#sti loodud" kus on komponendid" mille
kohta k&ige t#psema lahenduse leia3 just sealt%
1.1 Angulari dokumentatsioon
Angulari dokumentatsioon on h#sti loodud% Dokumentatsioon on lahti löödud moodulitesse" mis
koosne$ad eri komponentidest% Komponentide kasutus$&imalused on dokumentatsioonis" koos
koodin#idetega" h#sti $#lja toodud% Dokumentatsioonis on olemas isegi &peta$ juhend" kus saa3
paljusid komponente kasutada ja &ppida selle a3il% Angulari lehel on ka $&imalik koodi muuta ja
kohe n#ha" mis kood tee3 >9dit in ?lunker@ nupu a3il% Lehel on olemas ka arendaja juhend" kus
asu$ad olulisemad Angulari komponendid '$t joonis (%
!
Joonis 1: Arendaja juhend
8/15/2019 AngularJS by Sander Leetus
6/28
Angulari &petus koonse3 j#rgne$atest peat5kitest '$t joonis 2(%
Angulari juhendit kasutades $&i3 tekkida raskusi" kuna selle kasutamiseks l#he3 $aja algteadmisi
kuidas kasutada it $ersiooni s5steemi ja selle k#ske% Koodin#ited ei pruugi ka k&ige lihtsamad
olla" samas on need $#ga h#sti #ra seletatud% 9i soo$ita koodin#idetega siit alustada" kuidAngulari komponentide kohta lugemiseks on $#ga hea koht%
1.2 w3schools
*+s,hools 'edasipidi B+( on eriti hea $ee3ip&hine &petus" kuna peale selle" et see sisalda3
n#iteid Angulari kohta on seal ka >TrC it Coursel=@ nupp" kus saa3 koheselt koodin#ite tööle
panna ja modi=itseerida seda kohapeal%
B+ lehel on loodud j#rgne$ad &petused ja nende kohta n#ited '$t joonis +(%
https:;;git s,m%,om;
-
Joonis 2: Angulari õpetus
8/15/2019 AngularJS by Sander Leetus
7/28
B+ lehel on $#ga algsed ja lihtsad koodin#ited% Seletused on $#ga lihtsustatud" ei ole kasutatud
liigseid $#ljendeid% Iga peat5ki juures on $#ga palju n#iteid ja k&iki on $&imalik muuta ja n#hamis tee$ad '$t joonis )(% 4&imalik" et antud kolmest &petusest k&ige parem leht koodin#idete
jaoks%
Samas kuna koodin#ited ja nende seletused on h#sti lihtsustatud" siis j##3 antud lehest ar$ata$asti
$#heseks" et iga mooduli kohta piisa$alt in=ot saada%
Joonis 3: W3 õpetus
Joonis 4: W3 Koodinäite muutmise leht
8/15/2019 AngularJS by Sander Leetus
8/28
1.3 Tutorialspoint
Sarnane3 B+ &petusega" kuid pikemad koodin#iteid ja seletusi"
samas koodin#ited on ka keerukamad" mis on h#sti osadeks
seletatud ja 5lesehitus on parem% Tutorialspointis on sarnaselt
B+ koodin#ite redigeerimis $&imalus >TrC it@ nupu a3il '$t
joonis -(% Samuti on peat5ki l&pus ka koodin#ite tulemus
olemas" kus saa3 koheselt proo$ida mida rakendus tee3%
4&imalik" et parim &petust antud kolmest" kuna on olemas
p&hjalikud koodin#ited" mis on peat5ki sees lahti $&etud ja #ra
seletatud ning peat5ki l&pus on olemas ter$e koodil&ik koos
rakendusega olemas% Samas lehepeal on $&imalik antud koodlahti $&tta ja muuta ning koheselt ka tulemust n#ha%
.
Joonis 5: Tutorialspoint õpetus
Joonis 6: Tutorialspointi oodinäite muutmise leht
8/15/2019 AngularJS by Sander Leetus
9/28
2 AngularAngular on struktuurne raamistik" mis on loodud d5naamiliste $ee3irakenduste jaoks% Antud
raamistik $&imalda3 kasutada 1T7L malli ja laiendada 1T7L i s5ntaksit" mis $#ljenda3
rakenduse komponente selgelt ja l5hidalt% K&ik toimu3 $ee3ilehitseja sees" mis tee3 Angularist
ideaalse partneri iga $&imaliku ser$eritehnoloogiaga% Angulari rakenduses mallide t#itmise töö
in=oga liigutatakse ser$erilt kliendile" mille tagaj#rel on s5steem paremini struktureeritud% All on
p&hi=unktsioonid $#lja toodud" mida selleks kasutada%
Angulari loomisega alustati aastal 200/ kahe arendaja poolt" 7isko 1e$erC ja Adam A3rons%
Algselt oli antud kahe arendaja projekt nimetatudGetAngular " mis pidi olema $ahend" et
$ee3idisainerid saaksid suhelda samaaegselt frontend- ja backend iga% 1e$erC alustas töötamist
projektiga Google Feedback koos ooglega% Koos kahe teise arendajaga kirjutasid - kuu
perioodiga nad 000 rida koodi% Kuna kood oli nii$&rd pikk ja tekkis raskusi testmisega ja
muutmisega" siis 1e$erC tegi kihl$eo" et suuda3 rakenduse 5m3erkirjutada" kasutades
GetAngular " seda kahe n#dalaga% 1e$erC k5ll kaotas selle kihl$eo" kuna kulus tal aega + n#dalat"
kuid ta oli $&imaline koodi l5hendama 000 realt !00 reale% T#nu 1e$erC edule hakkas
Angulari arendus ka kiirenema% 'Austin(
2.1 Avaldised
Angulari a$aldised on Ja$aS,ripti sarnades koodil&igud" mis on pandud loogelistesse sulgudesse
{{ avaldis }} % Angulari a$aldised on sarnased Ja$aS,ripti omadega" j#rgne$ate
erine$ustega ' oogle" kuup#e$ puudu3(%
• Kontekst: Ja$aS,riptis a$aldise $##rtus leitakse glo3aalsewindow $astu% Angularis
kasutatakse selleks scope o3jekti%• Andesta$: Kui Ja$aS,ript 5rita3 hinnata de=ineerimata omadusi" genereeri3 see
ReferenceError $&iTypeError % Angularis samas on see lihtsalt kasundefined $&inull %
• ?uudu$ad k#su$oo laused: 9i ole $&imalik kasutada tingimuslauseid" silmuseid ning
erindeid%
• ?uudu$ad =unktsioonide deklareerimised: 9i ole $&imalik deklareerida =unktsioone
/
8/15/2019 AngularJS by Sander Leetus
10/28
a$aldistes" isegi mitteng-init direktii$is%
• Ja$aS,ripti a$aldised: 9i ole $&imalik kasutada Ja$aS,ripti a$aldisi Angulari a$aldistes%
• 9i komasid egavoid operaatoreid: 9i saa kasutada " $&ivoid Angulari a$aldises%
•
iltrid: iltreid on $&imalik kasutada a$aldiste sees" et $ormistada in=o enne selleku$amist%
Kui on soo$ jooksutada keerulist Ja$aS,ript koodi" peaks
kontroller tegema selle meetodiks ja kutsuma selle $aatest%
Samas kui on soo$eval() Angulari a$aldist ise" saa3 ka
kasutada$eval() meetodit% ' oogle" kuup#e$ puudu3(
2.2 Andmete sidumine
Andmete sidumine on Angulari rakendustes in=o automatiseeritud s5nkroniseerimine mudeli ja
$aate komponentide $ahel% Angulari moodus andmete sidumist rakendada lase3 sul mudelit
k#sitleda" kui single-source-of-trut sinu rakenduses% 4aade on koguaeg mudeli projektsioon" kui
$aade muutu3" muutu3 ka mudel ja $astupidi% ' oogle" kuup#e$ puudu3(
9namik malle sidu$ad andmeid $aid 5hes suunas" nad 5henda$ad mallide ja mudelitekomponendid kokku $aatesse% ?eale 5hendamist ei ole mudeli muutumisi $&imalik automaatselt
$aates uuendada '$t joonis .(% See t#henda3" et arendaja pea3 kirjutama koodi" mis koguaeg
s5nkroniseeri3 $aate mudeliga ja mudeli $aatega% ' oogle" kuup#e$ puudu3(
Angulari mallid tööta$ad" aga teistmoodi% K&igepealt mall" mis on 1T7L koos t#ienda$ate
direktii$idega on kompileeritud $ee3ilehitsejasse ' oogle" kuup#e$ puudu3(% K&ik muudatused
$aates on koheselt peegeldatud mudelis ja $astupidi '$t joonis /(%
0
Joonis !: Kõi i a"aldisi oosasutades
Joonis #: $hte pidi andmetesidumine
Joonis %: Kahte pidi andmetesidumine
8/15/2019 AngularJS by Sander Leetus
11/28
2.3 Direktiivid
Direktii$id ' !irectives ( on markerid dokumendi o3jekti
mudeli 'edaspidi DE7( elemendis" mille hulka kuulu$ad
atri3uudid" elemendi nimed" kommentaarid $&i SS klass"
mis anna$ad Angulari 1T7L kompileerijale teada" et
lisada ettem##ratud k#itumine DE7 elemendile%
Direktii$id lase$ad Angularil laiendada 1T7L i"
eesliitega ng-" L#hemalt on kirjas m&ne direktii$i kohta
allpool koodin#idete juures% ' oogle" kuup#e$ puudu3(
2. !ontrollerid
Angulari rakendus tugine3 kontrolleritel" mis juhi$ad andme$oogu rakenduses% Kontrollerid
de=ineeritakse direktii$ing-controller a3iga% Kontrolleril $&i$ad olla ka meetodid" =unktsioon
muutujana% Kontrolleri klass sisalda3 rakenduse tege$use loogikat" mis lisa3 scope o3jekti
=unktsioonid ja $##rtused% Suuremates rakendustes hoitakse kontrollereid ta$aliselt eraldi
=ailides% '*+s,hools" kuup#e$ puudu3(
7&lemad koodin#ited 'koodin#ide ja 2( anna$ad sama tulemuse" kuid koodin#ites 2 on
kasutatud =unktsiooni t#isnime saa$utamisel% Koodin#ites on t#isnimi lihtsalt a$aldise a3il
saa$utatud 'Joonis (%
Joonis 1&: 'elja dire tii"i asutusoodinäites
Joonis 11: (simese ja teise ontrollerioodinäide
Joonis 12: Kontrolleri )ailieraldi sisse lugemine ja selle
asutamine
8/15/2019 AngularJS by Sander Leetus
12/28
2." #iltrid
iltrid loo$ad $ormingu a$aldise $##rtusest" mis ku$atakse kasutajale% iltreid saa3 kasutada
a$aldistes $&i direktii$ides kasutades F 'p5stkriipsu( s5m3olit%
J#rgne$ad =iltrid on enim kasutatud 'Tutorialspoint" kuup#e$ puudu3(%• uppercase G Kon$erdi3 teksti suurt#htedeks '$t joonis )(%
• lowercase G Kon$erdi3'muuda3( teksti $#iket#htedeks%
• currency G 7uuda3 teksti $aluuta $ormingusse%
• filter G iltreeri3 massii$ist $asted" $asta$alt kriteeriumile '$t joonis +(%
• order#y G ?ane3 massii$i j#rjekorda" $asta$alt kriteeriumile '$t joonis !(%
7idagi koodis m##ramata oska3 rakendus =iltreerida" nii nime kui ka $anust ja seda 5he ainult
5hte input $#lja kasutades '$t joonis -" (%
2.$ %ttp
Angular on ka $arustatud Hhttp kontrolliga" mis tööta3 teenusena" et lugeda andmeid ser$erist%
Ser$er k5si3 andme3aasist $ajalikud andmed% Töötamiseks pea3 in=o j&udma Angularini JSE6
=ormaadis 'Tutorialspoint" kuup#e$ puudu3(% Angulari http kasutades on puudusi" kuna Angular
2
Joonis 14: *iltriupper+ase asutus
Joonis 15: *iltri order,-asutus Joonis 13: *iltri )ilter asutus
Joonis 16: *iltri )ilter asutus Joonis 1!: *iltri )ilter asutus
8/15/2019 AngularJS by Sander Leetus
13/28
ei oska midagi sellega teha" kui in=o ei j&ua JSE6 =ormaadis rakendusse% Seega kui on soo$
muus =ormaadis =aile lugeda pea3 selleks %uery a3i kasutama%
2.& Ta'elid
Ta3elite andmed on ta$aliselt kordu$ad" seegang-repeat direktii$i kasutamine $&imalda3ta3eleid luua kergelt%
iltri peat5kis kasutatudorder#y =iltrit on kasutatud ka siin '$t joonis /(%
+
Joonis 1#: .ttp a/il )aililugemine ja listi loomine
Joonis 2&: Ta/eliloomine
Joonis 1%: Ta/eliloomine ja selle)iltreerimine order,-)iltriga
8/15/2019 AngularJS by Sander Leetus
14/28
2.( )ormid
4ormide a3il on $&imalik kasutajal sisestada andmeid% Sisestatud andmeid on $&imalik ka
sal$estada massii$i '$t joonis 2 (% 4ormid paku$ad $alideerimisteenust" mis t#henda3" et
kasutajale on $&imalik teada anda $alest sisendist ' resolin" 20 !(% See paku3 paremat kasutaja
kogemust" kui ainult ser$eripoolne $alideermine" kuna kasutaja saa3 kohest tagasisidet" kuidas
$iga parandada% Samas seda $&idakse kergesti #ra kasutada" seega ser$eripoolne $alideerimine
on siiski $ajalik%
)
Joonis 21: 0ormi loomine ja andmete sal"estaminemassii"i
8/15/2019 AngularJS by Sander Leetus
15/28
2.* Animatsioonid
Angular on $aikimisi animatsioonid $#lja l5litanud" nende kasutamiseks tule3 teek rakendusse
lisada ning see ka moodulisse laadida% 'n gAni&ate moodul toeta3 SS 3aasil animatsioone ning
Ja$aS,ript 3aasil animatsioone(% Animatsioonid Angularis p&hine$ad t#ielikult SS klassidel"
kui $ee3ilehel on SS klass on 1T7L elemendi k5lge kinnitatud on sellele $&imalik
animatsiooni lisada%
!
Joonis 22: Animatsiooni a/iga nähta"
Joonis 23: Animatsioonia/iga nähtamatu
8/15/2019 AngularJS by Sander Leetus
16/28
3 Angulari komponentide kood
3.1 Juhend Angulari +lesseadmiseks
K&igepealt tule3 luua uus 1T7L =ail" kuhu kirjutatakse kogu koodiosa '$t koodin#ide (%
"ulari #$etus
!oodin,ide 1. %T- /aili loomine.
J#rgmiseks tule3 lisada ead tagide sisse Angularilibrary '$t koodin#ide 2(%
!oodin,ide 2. Angulari +lesseadmine
3.2 AvaldisedPasta1ate hi d 1 11u, {{ summa 2 1 11u }}3!oodin,ide 3. Avaldise a'il t,isarvude korrutise leidmine
Tere {{isi1 imi 4 ' ' 4 isi1 $ere1 a imi}}!!oodin,ide . Avaldise a'il stringide kokku liitmine
5a us, {{isi1 va us}}!oodin,ide ". Avaldise a'il o'jekti k,tte saamine
Pu 1tid6T7 , {{$u 1tid9:;}}!oodin,ide $. Avaldise a'il massivist tulemuse k,tte saamine
Pasta1ate hi d 1 11u, {{ summa 2 1 11u }}3Tere {{isi1 imi 4 ' ' 4 isi1 $ere1 a imi}}!5a us, {{isi1 va us}}Pu 1tid6matemaati1a , {{$u 1tid9:;}}
-
https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.jshttps://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.jshttps://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.jshttps://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js
8/15/2019 AngularJS by Sander Leetus
17/28
!oodin,ide &. 0elnevalt mainitud avaldised korraga kasutuses
3.3 Andmete sidumine
Ees imi, {{isi1 ees imi}}Pere1 a imi, "us, Tere? {{ ees imi }}!7si1ute list,
8/15/2019 AngularJS by Sander Leetus
18/28
• Antud koodisng-app l#htesta3 $aikimisi Angulari rakenduse%ng-app anna3 Angularile ka
teada" et element on rakenduse omanik%
• ng-init l#htesta3 rakenduse algandmed" antud n#ites kasutame JSE6 s5ntaksit" et
de=ineerida isikute massii$%
• ng-&odel direktii$ m##ra3 kasutata$ad mudelid $&i muutujad" antud juhulinput rakenduse andmega'antud juhul on de=ineeritud mudel nimega >eesnimi@(%
• ng-repeat loo3 kordus ar$ 1T7L elemente" $asta$alt sellele kui palju andmeid massii$is
on%
3." !ontroller• Angulari rakendus on de=ineeritudng-app='uusApp' %
• Kontroller on de=ineeritudng-controller' uus trl direktii$iga% uus trl on *ava+cript =unktsioon%
• Angular toesta3 kontrolleri$scope o3jektiga% Angularis$scope on rakenduse o3jekt" mis
oma3 rakenduse muutujaid ja =unktsioone%
Ees imi,
THis imi, {{ isi1 ees imi 4 ' ' 4 isi1 $ere imi }}
var a$$ = a "ular m dule6'uus $$'? 9;a$$ c tr ller6'uusCtrl'? fu cti 6Isc $e {
Isc $e isi1 = {ees imi, ' u1u'?$ere imi, 'Tamm'
}}
!oodin,ide 11. !ontrolleri loomine ja rakenduses kasutamine
J#rgmises n#ites loome =unktsiooni nimega taisnimi o3jekti$scope"isik " mille töö on tagastada
t#isnimi" seej#rel kasutame loodud =unktsiooni a$aldises '$t koodin#ide 2(%
.
8/15/2019 AngularJS by Sander Leetus
19/28
Ees imi, THis imi, {{ isi1 tais imi6 }}
var a$$ = a "ular m dule6'uus $$'? 9;a$$ c tr ller6'uusCtrl'? fu cti 6Isc $e {
Isc $e isi1 = {ees imi, ' u1u'?$ere imi, 'Tamm'?tais imi, fu cti 6 {
var isi1O&+e1tisi1O&+e1t = Isc $e isi1retur isi1O&+e1t ees imi 4 ) ) 4
isi1O&+e1t $ere imi
}}}
!oodin,ide 12. !ontrolleris /unktsiooni loomine ja kasutus rakenduses
J#rgmiseks loome uue kontrolleri =aili" mida hiljem kasutame ka =iltrite peat5kis '$t koodin#ide
+(%
a "ular m dule6'mi u $$'? 9; c tr ller6' imedCtrl'?fu cti 6Isc $e {
Isc $e imed = 9{ imi, ' u1u'? va us, /}?{ imi, ' alle'? va us, .A}?{ imi, ' uha '? va us, B/}
;;!oodin,ide 13. !ontrolleri /ail salvestada nimega nimed!ontroller.js
Kasutame tehtud kontrolleri =aili rakenduses" mis siis loe3 =ailist andmed ja k#tte saadud
andmete a3il loo3 listi '$t koodin#ide )(%
8/15/2019 AngularJS by Sander Leetus
20/28
3.$ #iltrid
Kasutame eelmises peat5kis loodud kontrollerit uus trl ning rakendame sellele =iltriuppercase'$t koodin#ide !(%
Gimi {{ isi1 ees imi F u$$ercase}}
!oodin,ide 1". #iltri kasutamine avaldises
Antud kood muuda3 uus trlis ole$a eesnime suurteks t#htedeks" samamoodi saa3 ka kasutada
lowercase % iltritcurrency sai kasutatud andmete sidumise peat5kis '$t koodin#ide /(%
iltri kasutamine on ka $&imalik direktii$ides" kui eelmises peat5kis sai kasutatud direktii$ing-
repeat " siis saa3 sinna juurde lisadaorder#y =iltri% J#rgmise n#ite juures kasutame kontrollerit
nimed trl '$t koodin#ide -(%
8/15/2019 AngularJS by Sander Leetus
21/28
3.& %ttp
J#rgmises n#ites loeme ,ttp a3il teisest =ailist andmeid% Sellejaoks" aga peame uue teksti=aili
looma ning andmed sinna JSE6 =ormaadis kirja panema% Loome =aili nimega angular%t t '$t
koodin#ide .(%
{)tude "id),9 { )Gimi) , ) u1u)? )5a us) , .8? )Kii1) , )Eesti) }?
{ )Gimi) , ) uha )? )5a us) , ./? )Kii1) , )Eesti) }? { )Gimi) , )T# u)? )5a us) , .B? )Kii1) , )Eesti) }? { )Gimi) , ) evi )? )5a us) , B.? )Kii1) , )Eesti) };}!oodin,ide 1(. Angular.t4t /aili sisu
?eale =aili loomist kasutame j#rgmist koodijuppi" et sealt in=o k#tte saada%$ ttp"get a3il loeme
=aili ja &nnestumise korral kirjutatakse andmed Hs,ope%nimed o3jekti% Seej#rel saame nimed
o3jektist lihtsalt andmed $#lja ku$ada listi '$t koodin#ide /(%
8/15/2019 AngularJS by Sander Leetus
22/28
a$$ c tr ller6'tude "idCtrl'? fu cti 6Isc $e? Ihtt$ {Ihtt$ "et6' a "ular t*t '
success6fu cti 6res$ se {Isc $e imed = res$ se tude "id
}
}!oodin,ide 1*. %ttp a'il teisest /ailist andmete lugemine
3.( Ta'elid
Ta3eli koostamisel kasutameng-repeat direktii$i% Samuti kasutame eelmises peat5kis http a3il
k#tte saadud andmeid" mille paneme listi asemel n55d hoopis ta3elisse '$t koodin#ide 20(%
{{ i Gimi }}{{ i 5a us }}{{ i Kii1 }}
!oodin,ide 21. )anuse j,rgi /iltreeritud ta'el
22
http://www.tlu.ee/~sander12/angular.txthttp://www.tlu.ee/~sander12/angular.txt
8/15/2019 AngularJS by Sander Leetus
23/28
3.* )ormid
4ormide koodin#ites olen $#lja toonud mitu erine$at sisestust55pi ja seej#rel need kontrolleri
a3il o3jekti sal$estanud ning *+ . =ormaadis $#lja ku$anud" kasutades pre m#rgendeid '$t
koodin#ide 22(%
Gimi, 5alue, {{ 1asuta+a email }}
LKM, 5alue, {{ 1asuta+a $assN rd }}
Gum&er, 5alue,{{ 1asuta+a te*tarea }}
asuta+a = {{ 1asuta+a F +s }} alvestatud = {{ salvestatud F +s }}
var a$$ = a "ular m dule6'uus $$'? 9;a$$ c tr ller6'v rmiCtrl'? fu cti 6Isc $e {
Isc $e salvestatud = {}Isc $e uue da = fu cti 61asuta+a {
Isc $e salvestatud = a "ular c $(61asuta+a}
Isc $e reset = fu cti 6 {
Isc $e user = a "ular c $(6Isc $e salvestatud}
Isc $e reset6}
!oodin,ide 22. )ormi loomine ja selle andmete salvestamine o'jekti
2+
8/15/2019 AngularJS by Sander Leetus
24/28
3.1 Animatsioonid
Angulari animatsioonide kasutamiseks tule3 esmalt juurde lisada animatsioonide teek% Selleks
tule3 j#rgne$ koodil&ikead tagidesse lisada '$t koodin#ide 2+(%
!oodin,ide 23. Animatsioonide teeki +lesseadmine
Animatsioonide koodin#ites olen loonud lihtsadiv m#rgendites ole$a o3jekti n#htamatuks
muutmise" kui kastist linnuke #ra $&ta '$t koodin#ide 2)(%
7s 5isi&le
8/15/2019 AngularJS by Sander Leetus
25/28
lesanded
.1 5,itamine ja arvutamine
Luua $ee3ileht" kus on $&imalik direktii$ing-&odel a3il ter$itada" mida on l#3iinput $#lja
muuta" algselt oninput $#ljas kirjas >/orld @% Samuti teha" et tulem oleks suurte t#htedega%
J#rgmiseks lisada juurde kaksinput $#lja" kuhu saa3 ainult num3reid kirjutada ning mis
liidetakse kokku oma$ahel% Kolmandaks luua kontroller eraldi =ailina" kus on kirjas isikud ja
nende nimed" $anused" elukoht ja sugu% aili andmete p&hjal luua list" mis on nimede j#rgi
j#rjestatud%
2!
http://www.tlu.ee/~sander12/angular
8/15/2019 AngularJS by Sander Leetus
26/28
.2 Ta'eli n,itamine ja peitmine
Teise 5lesandena kasutada eelmise 5lesande kontrollerit $&i $&i3 luua ka uue" uute andmetega%
Selle p&hjal luua ta3el" mida on animatsioone kasutades $&imalik n#htamatuks muuta%
6#htamatuks tegemisel saa3 kasutada animatsioonide peat5kis ole$at koodin#idet '$t koodin#ide
2)(%
2-
http://www.tlu.ee/~sander12/angular/
8/15/2019 AngularJS by Sander Leetus
27/28
!okkuvõteK#esole$a seminaritöö l#htus pro3leemist" et puudu$ad eesti keelsed Angulari &ppematerjalid%
9esm#rgiks oli luua &ppematerjal" mis koosne3 koodin#idetest ja 5lesannetest" mida &pilane
$&iks l#3ida &ppematerjaliga tut$umisel% K&iki Angulari komponente &ppematerjal ei sisalda
kuid autori ar$ates on t#htsamad komponendid olemas" mida $&iks tar$is minna Angulari
rakenduse loomise k#igus%
9smalt kirjuta3 autor $ajamine$atest oskustest" mis $&iks &pilasel ju3a omandatud olla% Seej#rel
on kirjas olemasole$atest &petustest" mida on töö loomisel kasutatud ning l5hidalt Angularist
endast ja selle ajaloost%
Igast komponendist" mille kohta töös kirjas on juurde lisatud n#idiskood ja n#idiskoodi tulemus%Samuti on k&ik n#ited" mida seminaritöös on kasutatud" 5le$al autori poolt loodud $ee3ilehel
http:;;***%tlu%ee;
8/15/2019 AngularJS by Sander Leetus
28/28
!asutatud kirjandus*+s,hools% 'kuup#e$ puudu3(% Angular*+ Tutorial" Loetud aadressil
http:;;***%*+s,hools%,om;angular;de=ault%asp
Tutorialspoint% 'kuup#e$ puudu3(% Angular*+ Tutorial" Loetud aadressil
http:;;***%tutorialspoint%,om;angularjs;inde %htm
oogle% 'kuup#e$ puudu3(% Angular*+ % Loetud aadressilhttps:;;angularjs%org;
resolin" A% '20 !(% Angular*+ ,ub e0a&ples" Loetud aadressil
http:;;***%angularjshu3%,om;e amples;
Austin" A% 'kuup#e$ puudu3(% An verview of Angular*+ for 1anagers" Loetud aadressil
http:;;andre*austin%,om;an o$er$ie* o= angularjs =or managers;
2.
http://www.w3schools.com/angular/default.asphttp://www.tutorialspoint.com/angularjs/index.htmhttps://angularjs.org/http://www.angularjshub.com/examples/http://andrewaustin.com/an-overview-of-angularjs-for-managers/http://www.w3schools.com/angular/default.asphttp://www.tutorialspoint.com/angularjs/index.htmhttps://angularjs.org/http://www.angularjshub.com/examples/http://andrewaustin.com/an-overview-of-angularjs-for-managers/