В чем основное различие между rootScope и областью видимости в angularJs. Как это работает внутри

Я новичок в angular js, и я использую $scope в своем кодировании. Однако я понял, что область действия должна использоваться для глобальных переменных, чтобы убедиться, что я искал документы angularJs, но затем нашел детали корневой области, которые мне непонятны. Кто-нибудь помогает мне понять основную разницу между корневой областью и областью? Когда использовать.? И как внутренне это работает.?


person FayazMd    schedule 03.09.2016    source источник
comment
Возможный дубликат Разница между $scope и $rootScope   -  person Sameer K    schedule 03.09.2016


Ответы (2)


Области имеют иерархию.

Каждое приложение Angular имеет ровно одну корневую область, но может иметь несколько дочерних областей.

Приложение может иметь несколько областей действия, поскольку некоторые директивы создают новые дочерние области (см. документацию по директивам, чтобы узнать, какие директивы создают новые области). Когда создаются новые области, они добавляются как дочерние области своей родительской области. Это создает древовидную структуру, которая параллельна DOM, к которому они прикреплены.

Когда у вас есть что-то вроде:

{{name}}

Он будет искать в области действия этого свойства. Если такое свойство не найдено, выполняется поиск в родительской области и так далее, пока не будет достигнута корневая область. В JavaScript такое поведение известно как прототипное наследование, и дочерние области прототипически наследуются от своих родителей.

Если вы посмотрите на рисунок ниже, в самой внутренней области {{name}} разрешается свойство в ng-repeat. В области GreetCtrl он разрешается в свойство, определенное в этом контроллере. Если этот контроллер не определил свойство и оно было определено в $rootScope, будет показано значение $rootScope.

Наследие области действия

Итак, $rootScope — это корневая, глобальная или самая верхняя родительская область. :

Каждое приложение имеет одну корневую область. Все остальные области являются дочерними областями корневой области. Области обеспечивают разделение между моделью и представлением с помощью механизма наблюдения за изменениями модели.

Информацию о том, как работает область, см. в документах.

person ScottL    schedule 03.09.2016

$scope не является глобальной переменной, она используется в конкретном модуле и доступна через контроллер, тогда как $rootscope похожа на глобальные переменные между модулями, и, кроме того, у нас может быть несколько $scope, но у нас может быть только один $rootscope внутри нашего приложения, т.е. $ rootscope используется для переменных globla, а $scope используется для локальной переменной внутри модуля.

person Vikash Kumar    schedule 03.09.2016