lundi 1 décembre 2014

Injecter des variables serveur dans AngularJS

Injecter directement des valeurs du serveur dans le scope d'AngularJS peut s’avérer compliqué.

J'ai mis en place une solution la moins horrible possible :

Dans le template (en jsp, scala, .NET, php,  ...) :

<div ng-controller="mainCtrl">
... // le code HTML de votre application

<span>{{ init(<%=myValue%>) }}</span>
</div>

Dans votre application AngularJS, déclarer la fonction init dans votre controlleur !
angular.module.controller('mainCtrl', ['$scope', function () {
    return function ($scope, restSiret) {
        $scope.isPageValueLoaded = false;
        $scope.init = function (value) {
            if (!$scope.isPageValueLoaded) {
                $scope.isPageValueLoaded = true;
                $scope.pageData = value;
            }
        }
    }
]);

Vous pouvez passer du JSON, mais prenez garde à éviter d'avoir dans votre JSON la séquence suivante '}}', il faudra la remplacer par '} }' avec un espace pour éviter qu'Angular considère cela comme la balsie fermante.
leBloggers

Aucun commentaire:

Enregistrer un commentaire