I have been reading wrox angular book. Inside the book the author describes that a method of sharing data between controllers is to
as opposed to expose an object on a Service and letting angular's two way databinding do all the heavy lifting. Why would anyone go with the 'root scope publish/subscribe' methodology, instead of exposing an object on the service?
That's interesting question.
First we should consider differences on various levels:
Scope
$rootScope
we define variable in global scopeExtensibility
$rootScope
- we have limited options to add additional logic to work on this value (we can define another global function)Encapsulation
$rootScope
- all object defined in $rootScope would be visible in all modulesModularity
$rootScope
- global variables is not places in module spacesMaintaining
$rootScope
- it's very hard to find which components use our $rootScope
variable. Binding
$rootScope
- it is easy to setup two-way binding in several controllers on one variable in $rootScope
In my opinion this is only useful for make really global variables.
Say you have two controllers A and B, and a service S, storing the common data.
When A changes data in S, B cannot directly change its scope value by understanding that data in S has changed. Someone has to say to it that data in S has changed and update its scope according to this change. This may be done two ways.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With