utiliser un loader Js pour angularJs

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

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current ye@r *