180 votes

Quelle est la différence entre les services $ parse, $ interpolate et $ compile?

Quelle est la différence entre les services $parse , $interpolate et $compile ? Pour moi, ils font tous la même chose: prendre un modèle et le compiler en fonction de modèle.

465voto

pkozlowski.opensource Points 52557

Ceux sont tous des exemples de services qui aide dans AngularJS le rendu de l'affichage (bien qu' $parse et $interpolate pourrait être utilisé à l'extérieur de ce domaine). Pour illustrer ce qu'est le rôle de chaque service prenons l'exemple de ce morceau de code HTML:

var imgHtml = '<img ng-src="/path/{{name}}.{{extension}}">'

et valeurs de la portée:

$scope.name = 'image';
$scope.extension = 'jpg';

Compte tenu de ce balisage voici ce que chaque service apporte à la table:

  • $compile - on peut prendre l'ensemble du balisage et de la transformer en une fonction de liaison qui, lorsqu'elle est exécutée à l'encontre d'un certain champ d'application va transformer un morceau de texte HTML dynamique, DOM live avec toutes les directives (ici: ng-src) réagir à des changements de modèle. On pourrait invoquer celle-ci comme suit: $compiler(imgHtml)($champ) et d'un élément du DOM avec tous les événements DOM limites. $compile est prise de l'utilisation de $interpolate (entre autres choses) pour faire son travail.
  • $interpolate sait comment traiter une chaîne de caractères avec embedded interpolation expressions, ex.: /path/{{name}}.{{extension}}. En d'autres termes, il peut prendre une corde avec interpolation des expressions, une portée et d'en faire le texte qui en résulte. On peut penser à de la $interpolation service très simple, basée sur une chaîne de modèle de langue. Compte tenu de l'exemple ci-dessus serait d'utiliser ce service comme: $interpolate("/path/{{name}}.{{extension}}")($scope) pour obtenir le path/image.jpg chaîne de caractères comme un résultat.
  • $parse est utilisée par $interpolate pour évaluer les expressions individuelles (name, extension) par rapport à une portée. Il peut être utilisé à la fois à lire et à définir des valeurs pour une expression donnée. Par exemple, pour évaluer l' name expression on le ferait: $parse('name')($scope) pour obtenir une "image" de la valeur. Pour définir la valeur: $parse('name').assign($scope, 'image2')

Tous ces services travaillent ensemble pour fournir un live de l'INTERFACE utilisateur dans AngularJS. Mais ils opèrent à différents niveaux:

  • $parse est concerné avec une expression individuelle seulement (name, extension). C'est une lecture-écriture de service.
  • $interpolate sont en lecture seule et est préoccupé par les chaînes contenant plusieurs expressions (/path/{{name}}.{{extension}})
  • $compile est au cœur de AngularJS machines et peut tourner les chaînes HTML (avec les directives et l'interpolation des expressions) dans les DOM.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X