javascript - AngularJs - decorator

decorator usage in angularjs

decorator for a service

decorator for a directive

exemple : decorator de ng-if

Permet de rajouter un paramètre à ng-if dans le html sous la forme d'un autre attribut (ng-if-param). Les valeurs passées à ce paramètre servent d'entrée pour un service exécuté dans le decorator. Très utile pour la gestion des droits par exemple.

Usage dans le html :

<div ng-if="ngIfValue" ng-if-param="paramValue"></div>
(function (angular) {
    'use strict';

    angular
        .module('app')
        .config(config);

    config.$inject = ['$provide'];

    function config($provide) {

        $provide.decorator("ngIfDirective", ['$delegate', 'customService', function($delegate, customService) {
            var original = $delegate[0];
            var link = original.link;

            // redéfinition de la fonction link de la directive angular ng-if
            original.compile = function() {
                return function($scope, $element, $attr, ctrl, $transclude) {

                    // check maison sur la base d'un attribut ng-if-param
                    if($attr.ngIfParam) {
                        var paramValue = eval($attr.ngIfParam);
                        if (customService.fn(paramValue)) {
                            // on substitue la valeur de ng-if par false
                            $attr.ngIf = "false";
                        }
                    }

                    // appliquer le comportement normal de ng-if
                    link.apply(this, arguments);
                };
            };

            return $delegate;
        }]);
    }

})(angular);

results for ""

    No results matching ""