Quelqu'un sait-il si le raisonnement derrière l'utilisation des méthodes et des variables dollar dans angularJS est d'indiquer à angularJS d'éviter de vérifier ces valeurs lorsqu'une digestion est en cours ? Ainsi, si angular tombe sur $scope.$value
et $scope.value
alors il évitera de vérifier le premier puisqu'il est préfixé par un caractère dollar dans son nom de variable ?
Réponses
Trop de publicités?Il s'agit simplement d'une convention de dénomination de l'extrait ci-dessous. http://docs.angularjs.org/tutorial/step_05
Convention d'appellation du préfixe "$".
Vous pouvez créer vos propres services, et en en fait, c'est exactement ce que nous allons faire à l'étape 11. Comme convention de nommage, les services intégrés d'angular, les méthodes Scope et quelques autres API angulaires ont un préfixe '$' devant leur nom. N'utilisez pas le préfixe '$' pour nommer vos services et modèles. lorsque vous nommez vos services et vos modèles, afin d'éviter tout risque d'échec de l'application collisions de noms.
http://docs.angularjs.org/guide/concepts#angular_namespace
Espace de nom Angular
Pour éviter toute collision accidentelle de noms, Angular préfixe les noms des objets qui pourraient potentiellement entrer en collision par $. Veuillez ne pas utiliser le préfixe $ dans votre code car il pourrait accidentellement collision avec le code Angular.
Il y a quelques fois où Angular ignore les variables préfixées par le signe dollar :
-
Sur Commentaire de Schumli ci-dessous, où les filtres json ne les afficheront pas.
-
Lorsque vous utilisez le
{{ }}
angular n'affichera pas emboîté$
variables. Par exemple, ceci n'affiche que lavisible
propriété.<div ng-init="n = { visible: 'foo', $ignore: 'bar' };">{{ n }}</div>
-
De plus, lors de l'ajout d'un observateur explicite sur un objet d'étendue, les changements de propriétés avec un signe de dollar en tête de cet objet ne déclencheront pas l'observateur. Voir ce violon mis à jour .
-
angular.equals()
ignore les clés préfixées par$
.
Le site $
désigne une variable, un paramètre, une propriété ou une méthode qui appartient au noyau d'Angular.
Les propriétés des objets qui proviennent du cadre, mais qui ne font pas partie de l'API, peuvent débuter par $
- ou même $$
- pour désigner un privé méthode ou propriété. C'est de la même manière que le _
est souvent utilisé dans d'autres bibliothèques.
Cela n'a aucune implication pratique sur la façon dont le code est interprété par le runtime, il s'agit simplement d'une convention de dénomination qui dit "Vous ne devriez pas jouer avec ça".
Je ne suis pas tout à fait sûr, mais je crois que les internes d'AngularJS s'appuient sur la manipulation de ces variables préfixées par $ pendant le digest. Vérifier ces variables signifierait que le digest ne se stabiliserait jamais, puisqu'elles peuvent constamment changer pendant chaque cycle du digest.
Mais ne me cite pas. :)
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 qui commencent par $ ne sont pas utilisés dans ng-repeat
à cause d'une clause if dans la boucle for :
if(collection.hasOwnProperty(key) && key.charAt(0) != '$')
Quelqu'un a fait un problème sur le sujet ici sur la page github d'angulars