Moduly AngularJS
Co je modul AngularJS?
Modul definuje funkฤnost aplikace, kterรก se aplikuje na celou HTML strรกnku pomocรญ direktivy ng-app. Definuje funkce, jako jsou sluลพby, direktivy a filtry, zpลฏsobem, kterรฝ usnadลuje jejich opฤtovnรฉ pouลพitรญ v rลฏznรฝch aplikacรญch.
Ve vลกech naลกich dลรญvฤjลกรญch vรฝukovรฝch programech jste si vลกimli direktivy ng-app pouลพรญvanรฉ k definovรกnรญ vaลกรญ hlavnรญ aplikace Angular. Toto je jeden z klรญฤovรฝch konceptลฏ modulลฏ v Angular.JS.
Jak vytvoลit modul v AngularJS
Neลพ zaฤneme s tรญm, co je modul, podรญvejme se na pลรญklad aplikace AngularJS bez modulu a pak pochopรญme potลebu mรญt moduly ve vaลกรญ aplikaci.
Zvaลพme vytvoลenรญ souboru s nรกzvem "DemoController.js" a pลidรกnรญ nรญลพe uvedenรฉho kรณdu do souboru
Function Democontroller($scope) {
$scope.a=1;
$scope.b=2;
$scope.c=$scope.b + $scope.a;
});
Ve vรฝลกe uvedenรฉm kรณdu jsme vytvoลili funkci nazvanou โDemoControllerโ, kterรก bude v naลกรญ aplikaci fungovat jako kontrolรฉr.
V tomto ovladaฤi prรกvฤ provรกdรญme pลidรกnรญ 2 promฤnnรฝch aab a pลiลadรญme pลidรกnรญ tฤchto promฤnnรฝch k novรฉ promฤnnรฉ c a pลiลadรญme ji zpฤt k objektu scope.
Nynรญ vytvoลรญme nรกลก hlavnรญ Sample.html, kterรฝ bude naลกรญ hlavnรญ aplikacรญ. Vloลพme nรญลพe uvedenรฝ fragment kรณdu na naลกi strรกnku HTML.
<body ng-app="">
<div ng-controller="DemoController">
<h3> Guru99 Global Event</h3>
{{c}}
Ve vรฝลกe uvedenรฉm kรณdu jsme zahrnuli nรกลก DemoController a potรฉ pomocรญ vรฝrazu vyvolali hodnotu promฤnnรฉ $scope.c.
Vลกimnฤte si ale naลกรญ direktivy ng-app, mรก prรกzdnou hodnotu.
- To v podstatฤ znamenรก, ลพe ke vลกem kontrolรฉrลฏm, kterรฉ jsou volรกny v kontextu direktivy ng-app, lze pลistupovat globรกlnฤ. Neexistuje ลพรกdnรก hranice, kterรก by oddฤlovala vรญce ovladaฤลฏ od sebe.
- V modernรญm programovรกnรญ je to ลกpatnรก praxe, kdyลพ nejsou ovladaฤe pลipojeny k ลพรกdnรฝm modulลฏm a jsou globรกlnฤ pลรญstupnรฉ. Pro ovladaฤe musรญ bรฝt definovรกna nฤjakรก logickรก hranice.
A zde pลichรกzejรญ na ลadu moduly. Moduly se pouลพรญvajรญ k vytvoลenรญ tohoto oddฤlenรญ hranic a pomรกhajรญ pลi oddฤlenรญ ลรญdicรญch jednotek na zรกkladฤ funkฤnosti.
Zmฤลme vรฝลกe uvedenรฝ kรณd pro implementaci modulลฏ a pลipojte k tomuto modulu nรกลก ovladaฤ
var sampleApp = angular.module('sampleApp',[]);
sampleApp.controller('DemoController', function($scope) {
$scope.a=1;
$scope.b=2;
$scope.c=$scope.b + $scope.a;
});
Vลกimnฤme si klรญฤovรฝch rozdรญlลฏ ve vรฝลกe napsanรฉm kรณdu
-
var sampleApp = angular.module('sampleApp',[]);Konkrรฉtnฤ vytvรกลรญme modul AngularJS s nรกzvem 'sampleApp'. To bude tvoลit logickou hranici pro funkcionalitu, kterou bude tento modul obsahovat. Takลพe v naลกem vรฝลกe uvedenรฉm pลรญkladu mรกme modul, kterรฝ obsahuje ovladaฤ, kterรฝ plnรญ roli pลidรกnรญ 2 objektลฏ rozsahu. Mลฏลพeme tedy mรญt jeden modul s logickou hranicรญ, kterรก ลรญkรก, ลพe tento modul bude provรกdฤt pouze funkcionalitu matematickรฝch vรฝpoฤtลฏ pro aplikaci.
-
sampleApp.controller('DemoController', function($scope)Nynรญ pลipojujeme ovladaฤ k naลกemu modulu AngularJS โSampleAppโ. To znamenรก, ลพe pokud nebudeme odkazovat na modul 'sampleApp' v naลกem hlavnรญm HTML kรณdu, nebudeme moci odkazovat na funkฤnost naลกeho ovladaฤe.
Nรกลก hlavnรญ HTML kรณd nebude vypadat jako nรญลพe
<body ng-app="'sampleApp'">
<div ng-controller="DemoController">
<h3> Guru99 Global Event</h3>
{{c}}
Vลกimnฤme si klรญฤovรฝch rozdรญlลฏ ve vรฝลกe napsanรฉm kรณdu a naลกem pลedchozรญm kรณdu
<body ng-app="'sampleApp'">
V naลกem tฤlesnรฉm ลกtรญtku,
- Mรญsto prรกzdnรฉ direktivy ng-app nynรญ volรกme modul sampleApp.
- Zavolรกnรญm tohoto aplikaฤnรญho modulu mลฏลพeme nynรญ pลistupovat k ลรญdicรญ jednotce โDemoControllerโ a funkcรญm pลรญtomnรฝm v demo ลรญdicรญ jednotce.
Moduly a ลadiฤe v AngularJS
In Angular.JS, vzor pouลพitรฝ pro vรฝvojping Modernรญ webovรฉ aplikace vytvรกลejรญ vรญce modulลฏ a kontrolerลฏ, kterรฉ logicky oddฤlujรญ rลฏznรฉ รบrovnฤ funkcionality.
Normรกlnฤ budou moduly uloลพeny oddฤlenฤ Javascript soubory, kterรฉ by se liลกily od hlavnรญho souboru aplikace.
Podรญvejme se na pลรญklad, jak toho lze dosรกhnout.
V nรญลพe uvedenรฉm pลรญkladu
- Vytvoลรญme soubor s nรกzvem Utilities.js, kterรฝ bude obsahovat 2 moduly, jeden pro sฤรญtรกnรญ a druhรฝ pro odฤรญtรกnรญ.tracvรกnรญ.
- Potรฉ vytvoลรญme 2 samostatnรฉ aplikaฤnรญ soubory a z kaลพdรฉho aplikaฤnรญho souboru pลistoupรญme k souboru Utility.
- V jednom souboru aplikace budeme pลistupovat k modulu pro sฤรญtรกnรญ a v druhรฉm budeme pลistupovat k modulu pro podลazenรญ.tracvรกnรญ.
Krok 1) Definujte kรณd pro vรญce modulลฏ a ovladaฤลฏ.
var AdditionApp = angular.module('AdditionApp',[]);
AdditionApp.controller('DemoAddController', function($scope) {
$scope.a=5;
$scope.b=6;
$scope.c=$scope.a + $scope.b;
});
var SubractionApp = angular.module('SubtractionApp',[]);
SubractionApp.controller('DemoSubtractController', function($scope) {
$scope.a=8;
$scope.b=6;
$scope.d=$scope.a - $scope.b;
});
Vลกimnฤme si klรญฤovรฝch bodลฏ vรฝลกe napsanรฉho kรณdu
-
var AdditionApp = angular.module('AdditionApp',[]); var SubractionApp = angular.module('SubtractionApp',[]);Jsou vytvoลeny 2 samostatnรฉ Angular moduly, jeden s nรกzvem 'AdditionApp' a druhรฝ s nรกzvem 'Sub'.tractionApp'.
-
AdditionApp.controller('DemoAddController', function($scope) SubractionApp.controller('DemoSubtractController', function($scope)Pro kaลพdรฝ modul jsou definovรกny 2 samostatnรฉ kontrolery, jeden se nazรฝvรก DemoAddController a druhรฝ DemoSub.tractController. Kaลพdรฝ Controller mรก samostatnou logiku pro sฤรญtรกnรญ a podฤรญtรกnรญtracce ฤรญsel.
Krok 2) Vytvoลte hlavnรญ soubory aplikace. Vytvoลme soubor s nรกzvem ApplicationAddition.html a pลidejte nรญลพe uvedenรฝ kรณd
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Addition</title>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="lib/utilities.js"></script>
</head>
<body>
<div ng-app = "AdditionApp" ng-controller="DemoAddController">
Addition :{{c}}
</div>
</body>
</html>
Vลกimnฤme si klรญฤovรฝch bodลฏ vรฝลกe napsanรฉho kรณdu
-
<script src="/lib/Utilities.js"></script>
Odkazujeme na nรกลก soubor Utilities.js v hlavnรญm souboru aplikace. To nรกm umoลพลuje odkazovat na jakรฉkoli moduly AngularJS definovanรฉ v tomto souboru.
-
<div ng-app = "AdditionApp" ng-controller="DemoAddController">
K modulu 'AdditionApp' a DemoAddController pลistupujeme pomocรญ direktivy ng-app a ng-kontrolรฉr resp.
-
{{c}}Protoลพe odkazujeme na vรฝลกe zmรญnฤnรฝ modul a kontrolรฉr, jsme schopni odkazovat na promฤnnou $scope.c pomocรญ vรฝrazu. Vรฝraz bude vรฝsledkem pลidรกnรญ 2 promฤnnรฝch rozsahu aab, kterรฉ bylo provedeno v ovladaฤi 'DemoAddController'
Stejnรฝm zpลฏsobem to udฤlรกme pro subtracfunkce.
Krok 3) Vytvoลte hlavnรญ soubory aplikace. Vytvoลme soubor s nรกzvem โApplicationSubโtraction.htmlโ a pลidejte nรญลพe uvedenรฝ kรณd
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Addition</title>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="lib/utilities.js"></script>
</head>
<body>
<div ng-app = "SubtractionApp" ng-controller="DemoSubtractController">
Subtraction :{{d}}
</div>
</body>
</html>
Vลกimnฤme si klรญฤovรฝch bodลฏ vรฝลกe napsanรฉho kรณdu
-
<script src="/lib/Utilities.js"></script>
Odkazujeme na nรกลก soubor Utilities.js v hlavnรญm souboru aplikace. To nรกm umoลพลuje odkazovat na vลกechny moduly definovanรฉ v tomto souboru.
-
<div ng-app = " SubtractionApp " ng-controller=" DemoSubtractController ">
Pลistupujeme k โSubโtracModul tionApp a DemoSubtractController pomocรญ direktivy ng-app a ng-controller.
-
{{d}}Protoลพe odkazujeme na vรฝลกe zmรญnฤnรฝ modul a kontroler, mลฏลพeme odkazovat na promฤnnou $scope.d pomocรญ vรฝrazu. Vรฝraz bude vรฝsledkem podprogramutracovรกnรญ 2 promฤnnรฝch rozsahu a a b, kterรฉ bylo provedeno v DemoSubtractController kontrolor
Shrnutรญ
- Bez pouลพitรญ modulลฏ AngularJS zaฤรญnajรญ mรญt ลadiฤe globรกlnรญ rozsah, coลพ vede ke ลกpatnรฝm programovacรญm praktikรกm.
- Moduly se pouลพรญvajรญ k oddฤlenรญ obchodnรญ logiky. Lze vytvoลit vรญce modulลฏ tak, aby byly v rรกmci tฤchto rลฏznรฝch modulลฏ logicky oddฤleny.
- Kaลพdรฝ modul AngularJS mลฏลพe mรญt definovanou a pลiลazenou vlastnรญ sadu ovladaฤลฏ.
- Pลi definovรกnรญ modulลฏ a ลรญdicรญch jednotek se obvykle definujรญ samostatnฤ JavaScรฉnรกล soubory. Tyto JavaSoubory skriptลฏ jsou pak odkazovรกny v hlavnรญm souboru aplikace.
