Une application Angular nécessite au minimum :
Plus concrètement en code ça donnerait ceci :
Dans main.js
définissons le module de notre application booksApp
var booksApp = angular.module("booksApp", []);
Nous devons expliquer à Angular que nous "lions" notre page à booksApp
, donc dans index.html
, modifier le tag <body>
de la façon suivante avec la directive ng-app
:
<body ng-app="booksApp">
Dans main.js
définissons le Contrôleur MainCtrl
que l'on rattache à notre application booksApp
:
var MainCtrl = booksApp.controller("MainCtrl", function($scope) {
})
$scope
est la variable de contexte qui va contenir des informations accessibles et modifiables à la fois par le contrôleur et la vue.
Modifions notre contrôleur pour qu'il puisse nous fournir une liste de livres:
var MainCtrl = booksApp.controller("MainCtrl", function($scope) {
$scope.books = [
{title:"Backbone c'est de la balle", description:"tutorial bb", level:"très bon"}
, {title:"React ça dépote", description:"se perfectionner avec React", level:"bon"}
, {title:"J'apprends Angular", description:"from scratch", level:"débutant"}
];
})
Et modifions notre code html de la façon suivante :
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>livres</title>
</head>
<body ng-app="booksApp">
<div ng-controller="MainCtrl">
<h2>Livres</h2>
<div ng-repeat="book in books">
<h4>{{book.title}}</h4>
<p>{{book.description}} - Niveau <b>{{book.level}}</b></p>
<hr>
</div>
</div>
<script src="bower_components/angular/angular.min.js"></script>
<script src="js/main.js"></script>
</body>
</html>
Nous avons donc utilisé 2 directives supplémentaires :
<div ng-controller="MainCtrl">
pour lier notre contrôleur au <div>
<div ng-repeat="book in books">
pour parcourir le contenu de $scope.books
Et du templating pour afficher tout ça :
<h4>{{book.title}}</h4>
<p>{{book.description}} - Niveau <b>{{book.level}}</b>
Vous pouvez dès maintenant afficher votre page avec la liste des livres en ouvrant index.html
dans votre navigateur préféré.