$scope vs $rootScope

Pour réaliser une application angularjs, il est très important de comprendre les différences entre $scope et $rootScope. Cela permettra par la suite de mieux comprendre la gestion d´événement.

$rootScope

le $rootScope comme son nom l’indique fait référence à la racine. En effet, il y en un seul par application. Il va nous permettre de pouvoir transmettre des variables et événements entre nos différents controllers.

$scope

Le $scope quand à lui est instancié pour chaque controller. Il va permettre de communiquer avec les vues et directives filles.

Pour mieux comprendre, il suffit d’observer ce schéma

angularjsscopes

Du coup si je dois communiquer d’un controller à un autre, je vais devoir utiliser le $rootScope. En revanche si je souhaite dialoguer avec les enfants d’un controller je vais plutôt utiliser le $scope.

Attention à ne pas trop utiliser le $rootScope pour stocker des éléments au risque d’alourdir votre application.

Je vais finir cette article par la gestion des événements, cela permettra de comprendre l’utilisation que l’on peut avoir du $rootScope.

A noter qu’ici j’ai injecté le $scope dans mes controllers. C’est une pratique à éviter. On préférera exposer les méthode du controller via this.

 

Création de modèle objet

Tout d’abord, pourquoi vouloir créer des modèles d’objet ?
Pour moi il y a 3 objectifs :
– Structurer le code
– ne pas avoir besoin d’attendre l’éxécution du code pour connaître le contenu de l’objet.
– Ajouter des comportements à un objet.

Pour se faire, je crée une factory comme suit :

On comprend assez vite comment enrichir nos objets en utilisant cette méthode.
Pour aller plus loin, je rajoute un paramètre « data » à mon constructeur dans le but de pouvoir initialiser mes valeurs d’objet. Voici l’exemple :

Cette usage permet de mapper les objets provenant d’un dataservice :

A la sortie du « getPeople », on a donc un tableau de « Person » qui pourra être utilisé dans les vues.