2016-11-06 2 views
0

In AngularJS können Sie Daten im $ rootScope speichern oder einen Wert-Service erstellen? Beide können Sie nur mit der Abhängigkeitsinjektion zugreifen - also wo ist der Unterschied? Wann sollte ich das $ rootScope verwenden und wann der Wert-Service?

Antwort

0

$rootScope ist der Stamm scope Objekt, es ist das übergeordnete Objekt, das alle anderen scope erben von. Wenn eine Eigenschaft zu $rootScope hinzugefügt wird, ist diese Eigenschaft für alle untergeordneten $scope Objekte verfügbar. Diese Eigenschaften sind vorhanden, auch wenn $rootScope nicht in den Controller injiziert wird, aber eine Injektion erforderlich ist, um die Eigenschaften programmgesteuert zu ändern. Aufgrund der JavaScript prototype inheritance Regeln ist es möglicherweise möglich, einen spezifischen Controller einen $rootScope Wert zu verbergen. Dies macht $rootScope eine pseudo-globale, und möglicherweise unsicher. Aufgrund der Tatsache, dass jeder scope ein Nachkomme von $rootScope ist, ist $rootScope ideal für Dinge wie $broadcast.

Ein Value Service ist ein einfacher injizierbarer Singleton-Wert. Es ist nie verfügbar, es sei denn, injiziert. A Value soll nicht direkt modifiziert werden, es ist jedoch möglich in Angular 1.x. Value kann auch von einem Decorator abgefangen werden.

Verwandte Themen