Weiß jemand, ob der Grund für die Verwendung von Dollar-Methoden und -Variablen in angleJS darin besteht, angularJS anzuweisen, diese Werte nicht zu überprüfen, wenn eine Verdauung stattfindet? Wenn also eckig auf $scope.$value
und stößt $scope.value
, wird die erstere nicht überprüft, da dem Variablennamen ein Dollarzeichen vorangestellt ist.
128
$scope
, aber Direktive hatscope
. WTF?Antworten:
Angular ignoriert einige Male Variablen, denen das Dollarzeichen vorangestellt ist:
Bei Verwendung der
{{ }}
Direktive zeigt Angular keine verschachtelten$
Variablen an. Dies zeigt beispielsweise nur dievisible
Eigenschaft an.Wenn Sie einem Bereichsobjekt einen expliziten Watcher hinzufügen, wird der Watcher durch Änderungen an Eigenschaften mit einem führenden Dollarzeichen dieses Objekts nicht ausgelöst. Siehe diese aktualisierte Geige .
angular.equals()
ignoriert Schlüssel mit dem Präfix$
.quelle
Es ist nur eine Namenskonvention aus dem folgenden Snippet http://docs.angularjs.org/tutorial/step_05
http://docs.angularjs.org/guide/concepts#angular_namespace
quelle
$scope
in Controller, aberscope
in Direktive? --- [1] docs.angularjs.org/guide/directiveDas
$
Präfix bezeichnet eine Variable, einen Parameter, eine Eigenschaft oder eine Methode, die zum Kern von Angular gehört.Eigenschaften für Objekte, die aus dem Framework stammen, aber nicht Teil der API sind, können mit
$
oder sogar$$
mit einer privaten Methode oder Eigenschaft beginnen. Auf diese Weise wird das_
Präfix häufig in anderen Bibliotheken verwendet.Es hat keinen Einfluss auf die Art und Weise, wie Code von der Laufzeit interpretiert wird, obwohl das Framework selbst ihm möglicherweise eine besondere Bedeutung gibt. Grundsätzlich handelt es sich um eine Namenskonvention, die besagt, dass Sie sich damit nicht anlegen sollten.
quelle
$$__$_$
- es ist nur eine Kennung ohne besondere Bedeutung für den Dolmetscher.Ich bin mir nicht ganz sicher, aber ich glaube, dass AngularJS-Interna darauf angewiesen sind, diese $ -präfixierten Variablen während des Digests zu manipulieren. Das Überprüfen dieser Variablen würde bedeuten, dass sich der Digest niemals stabilisieren würde, da sie sich während jedes Digestzyklus ständig ändern können.
Zitiere mich aber nicht darauf. :) :)
quelle
Ich dachte immer, es
$
sieht aus wie ein "S" für den Service.quelle
Dollarzeichen ( $ ) verhindern auch, dass Elemente in bestimmten Anweisungen wiederholt (oder interpretiert) werden. So werden beispielsweise Eigenschaften, die mit $ beginnen,
ng-repeat
aufgrund einer if-Klausel in der for-Schleife nicht verwendet :Jemand hat hier auf der Angulars Github-Seite ein Problem mit dem Thema gemacht
In der Methode werden
shallowCopy
Eigenschaften, die mit $$ beginnen, aufgrund einer if-Klausel übersprungen , während die Eigenschaften wiederholt werden :quelle
@MarcoS stellte den Link zu https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope bereit, der einen Unterschied zwischen $ scope und scope erklärt. Ich fand das nützlich und fügte den Informationen in anderen Antworten hinzu.
In einer Winkelanweisung gibt es eine Verbindung und eine Steuerung. Der Link ist eine Standardfunktion mit einem festen Satz von Parametern: Bereich, Element, Attributobjekt.
Die Argumente des Controllers werden vom Angular-Injektor verwaltet und sind nicht auftragsabhängig. Der Injektor entscheidet, welche Objekte übergeben werden sollen, indem er nach den Parametern sucht, die mit $ beginnen.
Der Autor von https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope erklärt dies besser.
quelle
Es gibt einen großen Unterschied, nicht bei den Variablen, sondern bei den Parametern, die ein Controller empfängt. Ein scope-Parameter unterscheidet sich vollständig von einem $ scope-Parameter.
Weitere Informationen finden Sie in diesem nützlichen Beitrag: http://www.thinkster.io/angularjs/aw9kWmdnik/angularjs-scope-vs-scope
quelle