Est-ce que quelqu'un sait si le raisonnement derrière l'utilisation des méthodes dollar et des variables dans angularJS est de demander à angularJS d'éviter de vérifier ces valeurs lorsqu'une digestion est en cours? Donc, si angular tombe sur $scope.$value
et $scope.value
, alors il évitera de vérifier l'ancien car il est précédé d'un caractère dollar dans son nom de variable?
128
$scope
, mais la directive ascope
. WTF?Réponses:
Il y a quelques fois où Angular ignore les variables précédées du signe dollar:
Lors de l'utilisation de la
{{ }}
directive, angular n'affichera pas les$
variables imbriquées . Par exemple, cela n'affiche que lavisible
propriété.En outre, lors de l'ajout d'un observateur explicite sur un objet d'étendue, les modifications apportées aux propriétés avec un signe dollar en tête de cet objet ne déclenchent pas l'observateur. Voir ce violon mis à jour .
angular.equals()
ignore les clés précédées du préfixe$
.la source
Il s'agit simplement d'une convention de dénomination tirée de l'extrait ci-dessous http://docs.angularjs.org/tutorial/step_05
http://docs.angularjs.org/guide/concepts#angular_namespace
la source
$scope
en contrôleur, maisscope
en directive? --- [1] docs.angularjs.org/guide/directiveLe
$
préfixe désigne une variable, un paramètre, une propriété ou une méthode qui appartient au cœur d'Angular.Propriétés sur les objets qui proviennent à l' intérieur du cadre, mais ne sont pas en fait une partie de l'API, peut commencer
$
- ou même$$
- pour désigner une privée méthode ou une propriété. C'est de la même manière que le_
préfixe est souvent utilisé dans d'autres bibliothèques.Cela n'a aucun effet sur la façon dont le code est interprété par le runtime, bien que le framework lui-même puisse lui donner une signification particulière. Fondamentalement, c'est une convention de dénomination qui dit "Vous ne devriez pas jouer avec ça".
la source
$$__$_$
- c'est juste un identifiant sans signification particulière pour l'interpréteur.Pas tout à fait sûr, mais je pense que les composants internes d'AngularJS reposent sur la manipulation de ces variables à préfixe $ pendant le condensé. La vérification de ces variables signifierait que le digest ne se stabiliserait jamais, car elles peuvent changer constamment au cours de chaque cycle du digest.
Mais ne me citez pas là-dessus. :)
la source
J'ai toujours pensé qu'il
$
ressemblait à un "S" pour le service.la source
Les signes dollar ( $ ) empêchent également les éléments d'être itérés (ou interprétés) dans certaines directives. Ainsi, par exemple, les propriétés commençant par $ ne sont pas utilisées en
ng-repeat
raison d' une clause if dans la boucle for :Quelqu'un a fait un problème sur le sujet ici sur la page angulars github
Dans la méthode, les
shallowCopy
propriétés commençant par $$ sont ignorées à cause d'une clause if lors de l'itération des propriétés :la source
@MarcoS a fourni le lien vers https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope qui explique une différence entre $ scope et scope. J'ai trouvé cela utile, en ajoutant aux informations dans d'autres réponses.
Dans une directive angulaire, il y a un lien et un contrôleur. Le lien est une fonction standard avec un ensemble fixe de paramètres: portée, élément, objet d'attributs.
Les arguments du contrôleur sont gérés par l'injecteur angulaire et ne dépendent pas de l'ordre. L'injecteur résout les objets à transmettre en recherchant les paramètres commençant par $.
L'auteur de https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope fait un meilleur travail pour l'expliquer.
la source
Il y a une énorme différence, non pas dans les variables, mais dans les paramètres qu'un contrôleur reçoit. Un paramètre scope est complètement différent d'un paramètre $ scope.
Pour plus d'informations, consultez cet article utile: http://www.thinkster.io/angularjs/aw9kWmdnik/angularjs-scope-vs-scope
la source