AngularJS - Menu de navigation

Salut à toi, futurs développeurs web ! Aujourd'hui, nous allons plonger dans le monde passionnant d'AngularJS et apprendre à créer un menu de navigation. En tant que ton professeur d'informatique du coin, je suis là pour te guider à travers ce voyage pas à pas. Alors, prends-toi ta boisson favorite, installe-toi confortablement, et mettons-nous ensemble à cette aventure de codage !

AngularJS - Nav Menu

Qu'est-ce qu'un menu de navigation ?

Avant de nous attaquer au code, penchons-nous un instant pour comprendre ce qu'est un menu de navigation. Imagine que tu es dans une énorme bibliothèque avec des millions de livres. Comment trouverais-tu le livre que tu veux ? Tu chercherais probablement des pancartes ou un annuaire, n'est-ce pas ? Eh bien, un menu de navigation sur un site web est exactement comme cet annuaire de bibliothèque. Il aide les utilisateurs à se repérer facilement sur ton site.

Pourquoi utiliser AngularJS pour les menus de navigation ?

Tu te demandes peut-être : "Pourquoi devrais-je utiliser AngularJS pour mon menu de navigation ?" Eh bien, mon ami curieux, AngularJS rend la création de menus dynamiques et interactifs un jeu d'enfant. C'est comme avoir un couteau suisse surpuissant pour le développement web !

Premiers pas avec le menu de navigation AngularJS

Étape 1 : Configuration de ton projet

Première chose première, configurons notre projet. Nous devons inclure AngularJS dans notre fichier HTML. Voici comment on fait :

<!DOCTYPE html>
<html ng-app="myApp">
<head>
<title>Mon menu de navigation AngularJS</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
</head>
<body>
<!-- Notre contenu ira ici -->
<script src="app.js"></script>
</body>
</html>

Dans ce code, nous disons à notre HTML que nous utilisons AngularJS en ajoutant ng-app="myApp" à la balise <html>. Nous incluons également la bibliothèque AngularJS et notre propre fichier JavaScript (app.js) où nous écrirons notre code AngularJS.

Étape 2 : Création du module et du contrôleur AngularJS

Maintenant, créons notre module et notre contrôleur AngularJS. Dans ton fichier app.js, ajoute le code suivant :

var app = angular.module('myApp', []);

app.controller('NavController', function($scope) {
$scope.menuItems = [
{ name: 'Accueil', url: '#/' },
{ name: 'À propos', url: '#/about' },
{ name: 'Contact', url: '#/contact' }
];
});

Ici, nous créons un module AngularJS appelé myApp et un contrôleur appelé NavController. Le contrôleur contient un tableau d'éléments de menu que nous utiliserons pour générer notre menu de navigation.

Étape 3 : Création du HTML pour le menu de navigation

Maintenant, ajoutez le HTML pour notre menu de navigation. Mettez à jour ton fichier HTML pour inclure ceci :

<body ng-controller="NavController">
<nav>
<ul>
<li ng-repeat="item in menuItems">
<a href="{{item.url}}">{{item.name}}</a>
</li>
</ul>
</nav>

<script src="app.js"></script>
</body>

Dans ce code, nous utilisons la directive ng-controller pour dire à AngularJS d'utiliser notre NavController. Nous utilisons également la directive ng-repeat pour boucler sur nos éléments de menu et créer une liste d'items pour chacun.

Fonctionnalités avancées

Ajout de l'état actif aux éléments de menu

Faisons notre menu un peu plus joli en ajoutant un état actif à la page courante. Mettez à jour ton contrôleur dans app.js :

app.controller('NavController', function($scope, $location) {
$scope.menuItems = [
{ name: 'Accueil', url: '#/' },
{ name: 'À propos', url: '#/about' },
{ name: 'Contact', url: '#/contact' }
];

$scope.isActive = function(viewLocation) {
return viewLocation === $location.path();
};
});

Et met à jour ton HTML :

<li ng-repeat="item in menuItems" ng-class="{ active: isActive(item.url) }">
<a href="{{item.url}}">{{item.name}}</a>
</li>

Maintenant, l'élément de menu de la page courante aura une classe 'active'.

Création d'un menu déroulant

Reprenons de la hauteur et ajoutons un menu déroulant. Met à jour ton contrôleur :

$scope.menuItems = [
{ name: 'Accueil', url: '#/' },
{
name: 'Services',
url: '#/services',
subItems: [
{ name: 'Design web', url: '#/services/web-design' },
{ name: 'SEO', url: '#/services/seo' }
]
},
{ name: 'Contact', url: '#/contact' }
];

Et met à jour ton HTML :

<nav>
<ul>
<li ng-repeat="item in menuItems" ng-class="{ active: isActive(item.url) }">
<a href="{{item.url}}">{{item.name}}</a>
<ul ng-if="item.subItems">
<li ng-repeat="subItem in item.subItems">
<a href="{{subItem.url}}">{{subItem.name}}</a>
</li>
</ul>
</li>
</ul>
</nav>

Conclusion

Et voilà, les amis ! Tu viens de créer un menu de navigation dynamique et interactif avec AngularJS. Souviens-toi, la pratique rend parfait, alors n'ait pas peur d'expérimenter avec différents styles et fonctionnalités.

Voici un tableau résumant les principales directives AngularJS que nous avons utilisées :

Directive But
ng-app Définit l'élément racine d'une application AngularJS
ng-controller Spécifie quel contrôleur utiliser pour l'élément HTML
ng-repeat Répète un ensemble d'HTML un certain nombre de fois
ng-class Lie dynamiquement une ou plusieurs classes CSS à un élément HTML
ng-if Conditionnellement rend un élément HTML

Continue de coder, continue d'apprendre, et surtout, continue de t'amuser ! Jusqu'à la prochaine fois, c'est ton professeur d'informatique du coin qui signe. Bon codage !

Credits: Image by storyset