L’avantage d’avoir un loader pour angularjs est pour les tests car vous n’aurais à charger qu’ un seul fichier js dans vos test et votre véritable application AngularJs. Ce Js nous l’appellerons loader. Le principe est de charger angular normalement mais avec un contrôleur vide, on récupère le scope du contrôleur et on le remplit plus tard une fois tous nos script chargés.
Html :
<head>
<script src="http://code.angularjs.org/1.2.16/angular.min.js"></script>
<script src="controller.js"></script><!--le factice-->
</head>
<body>
<div ng-controller="planController" ng-app="planning">
{{message}}
</div>
<script src="loader.js"></script>
</body>
Le contrôleur factice vide: controller.js
var publicAccessToScope;
angular.module('planning', ['mod']);
var mod = angular.module('mod',[]);
mod.controller('planController',function($scope){//ne pas changer $scope
publicAccessToScope= $scope;
});
Le vrai controleur: controllerImpl.js
void function controlleur ($scope){//ici $scope peut être remplacé par un nom plus court
var $scope = $scope || {} //si vous faite des tests de controleur
$scope.message = "test2"
$scope.$apply();
return $; //si vous faite des tests de controleur
}(publicAccessToScope)
Un petit loader pas du tout optimisé:
function load(arg,dossier){
arg = arg.split(",");
for (var i in arg){
var script = document.createElement("script");
script.src = dossier + arg[i] + ".js";
document.body.appendChild(script);
}
}
//juste un exemple de script à charger ici dans le répertoire js
load("serialisation,ElementGraphique,Planning,Colonne,Evenement,Periode,Graphique,Categorie,Page","js/")
load("controllerImpl","./")// le vrai controleur