W Angular jest 2 ways to watch a group of variables. Ale jaka jest między nimi różnica?
Obie wydają się robić płytkie zegarki. Czy są sytuacje, w których jedno jest oczywiście lepsze od drugiego?
W Angular jest 2 ways to watch a group of variables. Ale jaka jest między nimi różnica?
Obie wydają się robić płytkie zegarki. Czy są sytuacje, w których jedno jest oczywiście lepsze od drugiego?
będzie płytko oglądać właściwości pojedynczego obiektu i powiadomi Cię, jeśli jedna z nich się zmieni.
$watchGroup
ogląda jednak grupę indywidualnych wyrażeń zegarka.
Nie są one równoważne funkcjonalnie. $watchGroup
może być używany, gdy chcesz oglądać wiele wyrażeń, które powinny odpowiadać na to samo wywołanie zwrotne - mogą to być indywidualne wyrażenia, które są skierowane na różne obiekty. To może być używane do oglądania 'foo'
, 'foo.bar'
i 'baz.qux'
. Są to 3 różne obiekty docelowe - foo
, foo
's własność bar
i baz
o wartości qux
, ale wszystkie one przekazują tę samą funkcję obsługi.
W przeciwieństwie do tego, $watchCollection
będzie tylko płytko oglądać pojedynczy obiekt. Dzięki temu jest to lepsze dla obiektu, który może bardzo zmienić jego właściwości (na przykład - nasz własny $scope
). Zgodnie z naszymi przykładami nazwy śmieci, aby osiągnąć to samo, co powyżej, chcesz tylko oglądać foo
i baz
, ale będziesz powiadamiany o wszelkich zmianach w foo
i baz
(w przeciwieństwie do samego powiadomienia o zmianach na samej foo
, .. foo.bar
i baz.qux
Oto przykład tego, gdzie chcesz użyć każdy
$scope.data = ['Abc', 'Bcd', 'Cde', 'Def'];
$scope.$watchCollection('data', function(){...});
// responds to changes within $scope.data
// The following line will trigger the watch function:
$scope.data[0] = 'FOO';
-
$scope.data = ['Abc', 'Bcd', 'Cde', 'Def'];
$scope.$watchGroup('data', function(){...});
// responds to changes on the properties (or functions, etc.)
// Any angular expression can be used in $scope.data
// The following line will trigger the watch function:
$scope.Abc = 'FOO';
napisał mor e dogłębne podsumowanie tego: https://medium.com/@jbmilgrom/watch-watchgroup-watchcollection-and-deep-watching-in-angularjs-6390f23508fe – jbmilgrom