I am very new to aurelia, I was going through the exercises and I came across $parent. That has direct access to the view model or to be more specific observers the values of the view model. In most cases you can use $parent.Method or $parent.Variable so why should you even bother with ${Variable} instead of ${parent.Variable}.
Aurelia automatically checks parent view-models when its binding to properties and methods so the use of $parent is rare. In our codebase I can’t even find any usages of $parent.
$parent - Explicitly accesses the outer scope from within a compose or repeat template. You may need this when a property on the current scope masks a property on the outer scope. Chainable- eg $parent.$parent.foo is supported
Basically, when you have something that changes your scope (such as a “with” : patrickwalters.net) you may still need to access a value from the outer scope (parent). If a property with the same name is present on both the child and the parent, it will chose the property from the closest scope (which in this case would be the child’s).
Here’s a gist of it:
It’s true that for "repeat"s I see it doesn’t actually change the scope…