web-dev-qa-db-fra.com

Que signifie :: dans angularJS

Je suis totalement nouveau sur angularJS. Quelqu'un peut-il m'aider avec cela s'il vous plaît? J'ai vu une syntaxe comme

<a href={{ ::something}}>some other thing</a>

À quoi sert ce double colon? Que se passe-t-il s'il est retiré?

37
Maryam

:: est utilisé pour la liaison unique. L'expression cessera de recalculer une fois qu'ils seront stables, c'est-à-dire après le premier digest.

Ainsi, les mises à jour apportées à something ne seront pas visibles.

73
Vivek

Il est utilisé pour lier le modèle de votre contrôleur en vue uniquement. Il ne mettra pas à jour votre modèle de contrôleur si vous le changez de votre vue. Cela signifie qu'il est utilisé pour obtenir une liaison unique.

Exemple

angular.module("myApp", []).controller('ctrl', ['$scope', function($scope) {
$scope.label = 'Some text';
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<html ng-app="myApp">
  <body ng-controller="ctrl">  
    <div>{{::label}}</div> // this will print `Some text` on load
    <div>{{label}}</div> // this will too print `Some text` on load
    <br />
    <button ng-click="label='IUpdateLabelFromHtml'">Change label</button>
  </body>
 </html>

Lorsque nous changeons la signification de l'étiquette lorsque nous cliquons sur le lien Changer d'étiquette, il ne mettra à jour que le deuxième texte, c'est-à-dire lié sans :: opérateur.

Lisez ceci pour plus de détails Liaison unidirectionnelle

5
Jay Shukla

Cela signifie que l'élément de portée "quelque chose" a une liaison unique qui lui est associée. Ainsi, si l'élément change dans le contrôleur, le changement ne sera pas appliqué.

Ceci est un bon article sur les observateurs et les fixations uniques

2
Mike Sav