2016-04-21 5 views
0

Ich habe einen Suchcontroller, wo der Benutzer nach einem einzelnen Bereich suchen kann. Nachdem ein Bereich durchsucht wurde, $ rootScope. $ Broadcast, dass der Bereich geändert wurde.

Ich habe verschiedene andere Controller, die für das unabhängige Laden und Anzeigen von Daten über diesen Bereich verantwortlich sind. Sie verwenden $ rootScope. $ On und erhalten zusätzliche Informationen aus anderen Quellen mit $ http.

Ist mein Ansatz der normale Weg, Dinge zu tun? Es fühlt sich ungewöhnlich an, da $ broadcast in den Tutorials, die ich durchgemacht habe, nicht erwähnt wurde.

Ich versuche, eckig zu lernen.

+0

Ich wette, sie wurden in vielen anderen Tutorials erwähnt, '$ Broadcast' ist schließlich Teil der API – svarog

+0

Es gibt viele Tutorials, sicher. Das meiste, was ich gesehen habe, sind Produkte/Artikel Seiten. Meine Frage ist vage, aber ich weiß nicht, wo ich anfangen soll. Andere Leute haben ähnliche Fragen gestellt, über die Kommunikation zwischen den Controllern, ich fühle einfach, dass mir etwas fehlt. – zod

Antwort

2

$ emit/$ broadcast werden häufig in eckigen Bibliotheken und sogar bei Drittanbietern verwendet.

Zum Beispiel Sie Ereignisse haben bei der Verwendung des ng-Route-Modul Navigation $ routeChangeStart, $ routeChangeSuccess, ... Gleiches gilt für die 3rd-Party-ui-Router: $ stateChangeStart, $ stateChangeSuccess, ....

Es ist nur ein Ereignis-Bus: Hören und Senden von Ereignissen, um mit externen Komponenten zu kommunizieren.

In angularJS finden Sie diese im Event-Teil der Dokumentation.

Sie sollten jedoch vorsichtig mit Ereignissen sein, zu viele von ihnen können dazu führen, dass Sie die Kontrolle darüber verlieren, was Sie gerade machen, oder in der Lage zu sagen, wie der aktuelle Zustand Ihrer App aussehen sollte.

Es ist für einige möglich, dass eine sauberere Methode, Daten in $ rootScope/a dost zu speichern und auf ihnen zu verwenden.

EDIT: ich habe es nicht erwähnt, aber das Speichern von Daten in $ rootScope ist nicht für Design/Wiederverwendbarkeit.Isolations Zweck empfohlen.

+1

Wahrscheinlich ist es keine gute Idee zu empfehlen, das '$ rootScope' zu ​​verschmutzen. Es wäre viel besser, einen Service zu implementieren, wie Sie es vorschlagen –

+0

+1 für' Es ist nur ein Event-Bus'. Trotzdem würde ich auch nicht empfehlen, Daten in $ rootScope zu speichern (zumindest nicht primär). – Fidel90

+0

Soweit ich weiß, speichere ich keine Daten im $ rootScope, außer dem Event-Handler selbst. Alle Daten, die ich dann brauche, werden dann durch die Ereignisargumente geleitet. Ist das in Ordnung, oder ist es noch besser, einen Service zu nutzen? – zod

Verwandte Themen