В то время как я смотрю на FEQs Angularjs, я видел статью ниже:
$ rootScope существует, но его можно использовать для зла
Области в Angular образуют иерархию, прототипно наследуя от корневой области видимости в верхней части дерева. Обычно это можно игнорировать, поскольку большинство представлений имеют собственный контроллер и, следовательно, область видимости.
Иногда есть фрагменты данных, которые вы хотите сделать глобальными для всего приложения. Для этого вы можете ввести
$rootScope
и установить значения в нем, как и в любой другой области видимости. Так как области видимости наследуются от корневой области видимости, эти значения будут доступны для выражений, прикрепленных к директивам, таким какng-show
точно так же, как значения в вашей локальной$scope
.Конечно, глобальное состояние - отстой, и вы должны использовать
$rootScope
экономно, как вы (надеемся) будете использовать с глобальными переменными на любом языке. В частности, не используйте его для кода, только для данных. Если у вас возникает желание поместить функцию в$rootScope
, почти всегда лучше поместить ее в службу, которую можно$rootScope
нужное место, и ее легче протестировать.И наоборот, не создавайте сервис, единственная цель которого - хранить и возвращать биты данных.
- AngularJS FAQ - $ rootScope существует, но его можно использовать для зла
Поэтому я сомневаюсь, почему $ rootScope не рекомендуется для функций как глобальной функции? Есть ли проблемы с производительностью?