Scopes in AngularJS use prototypal inheritance, when looking up a property in a child scope the interpreter will look up the prototype chain starting from the child and continue to the parents until it finds the property, not the other way around.
Check Vojta’s comments on the issue https://groups.google.com/d/msg/angular/LDNz_TQQiNE/ygYrSvdI0A0J
In a nutshell: You cannot access child scopes from a parent scope.
Your solutions:
- Define properties in parents and access them from children (read the link above)
- Use a service to share state
- Pass data through events.
$emitsends events upwards to parents until the root scope and$broadcastdispatches events downwards. This might help you to keep things semantically correct.