Jedną z decyzji konstrukcyjnych stojących za wprowadzeniem zakresów było ułatwienie zarządzania pamięcią. Dzieląc przestrzeń modelu na pod-części (zakresy), możemy usunąć niepotrzebne części modelu (zakres) i dodać nowe w razie potrzeby. Więc tak, zakresy są ważną częścią całej logiki zarządzania pamięcią.
Jeśli chodzi o konkretne pytanie dotyczące ng-view
- ta dyrektywa będzie nadal dotyczyć tylko aktywnego widoku . ng-view
jest jedną z dyrektyw tworzenia zakresu (i zakresu niszczenia!). Automatycznie utworzy nowy zakres, do którego nawiguje nowy widok, i automatycznie zniszczy zakres związany ze starym widokiem. Można to łatwo sprawdzić w AngularJS source code.
Jedyną zajmującą dużo pamięci częścią do rozważenia są szablony pobrane przez sieć. Wszystkie szablony wymienione na trasie są buforowane w $templateCache
. Możesz eksmitować szablony, używając oszczędnie, jeśli stwierdzisz, że radzi sobie z konkretnym wąskim gardłem w Twojej aplikacji. Musimy tylko uświadomić sobie, że jest to czas handlu (czas sieci) na zużycie pamięci.
W skrócie: nie trzeba wdrażać własnego zarządzania zakresami dla ng-view
- jeśli zauważysz jakiekolwiek zatrzymanie zasięgu, powinno zostać zgłoszone jako błąd.
Tak, js ma zbierania śmieci. Ale nie będzie zbierać niczego, co według niego jest w użyciu. W kanciastym założeniu zakłada się, że $ zakresy są nadal w użyciu, więc nigdy go nie zgromadzą. Pytam więc, co mam zrobić w Angular, aby upewnić się, że można je zebrać. – mfrancis107
Zawsze możesz użyć "usuń"? –
@KGChristensen Nie tak działa "usuwanie"? – rounce