Wie die Angular team (und mehrere blogs) beraten, versuche ich zu vermeiden, $rootScope
wie möglich in meinen Apps zu verwenden.
$rootScope
existiert, aber es kann mit globalen Variablen wie Sie$rootScope
sparsam verwenden würde verwenden für das Böse eingesetzt werden (hoffentlich) in jeder Sprache„Natürlich globalen Zustand saugt und Sie sollten Insbesondere nicht für Code verwenden, nur Daten.Wenn Sie versucht sind, eine Funktion auf
$rootScope
setzen, ist es fast immer besser, es in einen Dienst, der injiziert werden kann, wo es benötigt wird, und mehr leicht getestet. " - von Angular FAQ
Aber in einem meiner apps, verwende ich Ereignisse mehrmals wie $routeChangeStart
die Broadcast Ereignisse mit $rootScope
sind:
/* Force redirection to home page when a connected user calls login page */
$rootScope.$on("$routeChangeStart", function(event, next, current) {
if(next.$$route.originalPath == '/login' && Session.isUserConnected()) {
$location.path("/home");
}
}
Ich sehe nicht, einen Weg zu Vermeiden Sie $rootScope
in diesen Fällen.
- Gibt es eine elegantere Art, diese Art von Tricks zu machen?
- Ist das ein Designfehler meiner App, um es zu verwenden?
- Muss ich mich damit abfinden, es zu benutzen, wenn es absolut notwendig ist?
Sag mir, wenn Sie wollen, dass ich mehr Code-Beispiele zur Verfügung zu stellen.
Hast du diesen globalen Status gelesen und du solltest $ rootScope sparsam verwenden ??? –
@RameshRajendran Ja, von der [ersten Link] (https://docs.angularjs.org/misc/faq) habe ich (letzten Absatz) zur Verfügung gestellt. Es ist aus der ** Angular Dokumentation FAQ **. – Mistalis
Für diesen Fall hören Sie nur ein Ereignis, das an $ rootScope gesendet wird, ich denke, das ist ein gültiger Anwendungsfall. – Icycool