Outils pour utilisateurs

Outils du site


web:javascript:angularjs:directives

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
web:javascript:angularjs:directives [2014/12/03 21:53] – [Types de bindings] sgariepyweb:javascript:angularjs:directives [2022/02/02 00:42] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ====== Directives ====== ====== Directives ======
  
-===== Types de bindings =====+Les directives sont une façon de donner de nouvelles fonctionnalités au HTML. 
 + 
 +Il y a quatre types de directives: 
 + 
 +  * E - Élement -> ''<sg-element />''
 +  * A - Attribut -> ''%%<div sg-element></div>%%''
 +  * C - Classe -> ''%%<div class="sg-directive"></div>%%''
 +  * M - Comment -> ''<!-- directive: my-directive exp -->''
 + 
 +Généralement seulement les types **E** et **A** sont utilisés. 
 + 
 +Il est conseillé de préfixer les directives que l'on crée.  Angular a préfixé ses directives avec ''ng-'', on peut choisir tout autre combinaison, exemple ''sg-nom-de-la-directive''
 +===== Support de IE ===== 
 + 
 +Pour supporter les vieilles versions de IE, il faut utiliser des directives de type attribut.  Aussi, utiliser le [[wp>Polyfill|Polyfill]] JSON.stringify. 
 + 
 + 
 + 
 + 
 +====== Types de bindings ======
  
 ^ Symbol  ^ Utilisation  ^ ^ Symbol  ^ Utilisation  ^
Ligne 9: Ligne 28:
  
  
 +Dans le binding ''='', on peut utiliser ''=?''((https://github.com/angular/angular.js/pull/1889)) pour le rendre optionel.
 +
 +
 +
 +
 +
 +
 +====== Scope ======
 +
 +
 +=== Scope d'un élément ===
 +
 +Dans une directive, on peut avoir accès au scope d'un élément (autre au scope de la directive elle-même, mais un élément tout de même à l'intérieur de celle-ci).
 +
 +<code javascript>
 +element.on('click', 'input', function(event) {
 +    var inputScope = angular.element(this).scope();
 +});
 +</code>
 +
 +
 +
 +====== Exemples de directives ======
 +
 +
 +
 +==== Pourcent ====
 +
 +<code javascript>
 +myApp.directive("percent", function($filter){
 +    var p = function(viewValue){
 +        var m = viewValue.match(/^(\d+)\/(\d+)/);
 +        if (m != null)
 +          return $filter('number')(parseInt(m[1])/parseInt(m[2]), 2);
 +        return $filter('number')(parseFloat(viewValue)/100, 5);
 +    };
 +
 +    var f = function(modelValue){
 +        return $filter('number')(parseFloat(modelValue)*100, 2);
 +    };
 +    
 +    return {
 +        require: 'ngModel',
 +        link: function(scope, ele, attr, ctrl){
 +            ctrl.$parsers.unshift(p);
 +            ctrl.$formatters.unshift(f);
 +        }
 +    };
 +});
 +</code>
 +Source : [[http://jsfiddle.net/abhaga/DdeCZ/18/|JSFiddle]]
 +
 +
 +====== À lire ======
 +
 +  * [[http://www.jvandemo.com/the-nitty-gritty-of-compile-and-link-functions-inside-angularjs-directives/|The nitty-gritty of compile and link functions inside AngularJS directives]]
 +  * [[https://nulogy.com/articles/transclusion-in-angular|Transclusion in Angular]]
 +  * [[https://docs.angularjs.org/api/ng/service/$compile|$compile]]
web/javascript/angularjs/directives.1417640033.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)