AngularJS: почему не надо назначать обработчики на $rootScope внутри контроллеров
Вот здесь — https://blog.bullgare.com/2013/09/angularjs-%D0%BE%D1%82%D0%B2%D1%8F%D0%B7%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2-%D0%B8-%D1%80%D0%B0%D1%81%D1%81%D1%83%D0%B6%D0%B4/ подробно описано, как сложно всё выходит, если внутри контроллера повесить обработчик на события в $rootScope. Вкратце — потому, что при смене маршрута обработчик события никуда не девается, и его приходится руками удалять.
Простое решение проблемы — вешать обработчики не на $rootScope, а на локальный $scope, который потом удалится вместе со всеми обработчками.
Т.е. заменить
1 2 3 |
$rootScope.$watch('vars', function () { setCanShowAd(); }); |
на
1 2 3 |
$scope.$watch('vars', function () { setCanShowAd(); }); |
Similar Posts
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.