Angular, et la directive include
Alors comme je lâannonçais ce matin, lâarticle dâaujourdâhui sera court (trĂšs court), mais nĂ©anmoins il pourra peut-ĂȘtre changer votre vie de dĂ©veloppeur front (ok, jây vais un peu fort, mais âŠ). Combien de fois jâai pestĂ© parce que mon code html devenait trop âtouffuâ, illisible, ⊠Dans ces moments lĂ , il ya plusieurs solutions : bricolage avec jquery pour charger les templates, appel au plugin text de require, grunt, ⊠mais toujours une gymnastique Ă force pĂ©nible pour arriver Ă modulariser ses page html.
Avec Angular câest simple, en 1 seule directive vous pouvez rĂ©gler tous vos problĂšmes.
Pré-requis: avoir lu les articles précédents:
- http://k33g.github.io/2014/05/17/ANGULAR-01.html
- http://k33g.github.io/2014/05/18/ANGULAR-02.html
- http://k33g.github.io/2014/05/19/ANGULAR-03.html
- http://k33g.github.io/2014/05/20/ANGULAR-04.html
- http://k33g.github.io/2014/05/21/ANGULAR-05.html
- http://k33g.github.io/2014/05/24/ANGULAR-06.html
- http://k33g.github.io/2014/05/25/ANGULAR-07.html
Restructuration de notre projet (cÎté front)
Actuellement nous avons une structure front qui doit ressembler Ă ceci:
votre_projet/
âââ public/
| âââ bower_components/ /* angular est par ici */
| âââ js/
| | âââ main.js
| âââ index.html
âââ bower.json
âââ .bowerrc
Créez donc dans /public
un répertoire books
avec 2 fichiers html Ă lâintĂ©rieur : bookForm.html
et booksList.html
, comme ceci:
votre_projet/
âââ public/
| âââ bower_components/ /* angular est par ici */
| âââ js/
| | âââ main.js
| âââ books/
| | âââ bookForm.html
| | âââ booksList.html
| âââ index.html
âââ bower.json
âââ .bowerrc
Dans votre page index.html
extrayez complĂštement le code correspondant Ă votre formulaire pour le coller dans bookForm.html
. Le contenu de bookForm.html
devrait ĂȘtre celui-ci:
Ensuite, toujours de votre page index.html
extrayez complĂštement le code correspondant Ă votre liste de livre pour le coller dans booksList.html
. Le contenu de booksList.html
devrait ĂȘtre celui-ci:
Du coup, votre page index.html
devrait ressembler Ă ceci:
Alors câest tout de suite plus propre, mais ça marche forcĂ©ment beaucoup moins bien âŠ
La âmagieâ avec Angular
Nous devons juste nous contenter dâexpliquer Ă Angular oĂč sont bookForm.html
et booksList.html
. Et pour cela la directive ng-include
va grandement nous faciliter la vie. Pour cela,
Remplacez:
par:
Angular Ă partir de ng-include
ira charger books/bookForm.html
et lancera grĂące Ă onload
la méthode whenFormIsLoaded()
du contrÎleur (il faudra créer la méthode, mais onload
nâest pas obligatoire).
Puis remplacez:
par:
Angular, toujours Ă partir de ng-include
ira aussi charger books/booksList.html
et lancera grĂące Ă onload
la méthode whenListIsLoaded()
du contrÎleur (il faudra créer la méthode, mais onload
nâest pas obligatoire).
Remarque importante: avez vous vu que jâai mis les paths vers les templates html entre simples quotes avant de les mettre entre doubles quotes : câest pour Ă©viter Ă Angular dâĂ©valuer la directive.
Donc le code définitif de index.html
devrait ĂȘtre le suivant:
Il ne vous reste plus quâĂ tester. Je vous laisse imaginer comment cela va ĂȘtre facile de modulariser vos projets et de vous en faciliter la maintenance.
Next step: ngRoute
@ bientĂŽt ;)
Tweet