$scopen avulla voi myös lähettää eventtejä ja kuunnella niitä. Vastaavia toiminnallisuuksia on muissakin frameworkeissä, esim. Backbone Marionettessa.
$scopeissa on hierarkia ja niiden kaikkien ylin parent on $rootScope
. $scopet näkyvät/perityvät parenttiensa functiot ja muuttujat. $scopen hierarkioita luovat esim. sisäkkäiset controllerit.
Functioiden kohdalla tämä peritymisen käsite on yksinkertainen koska niitä tuskin muokataan ajon aikana. Muuttujat ovat haastavampia koska periytyminen on JavaScriptissä monimutkaista ja $scopet 'kopioivat' parent-$scopen muuttujien arvoja. Tästä on pitkä selitys AngularJS:n wikissä: The Nuances of Scope Prototypal Inheritance. Minä en ainakaan ole ymmärtänyt tuosta juuri mitään! Eli käytä $scopen periytyviä muuttujia varoen.
$broadcast lähettää eventtejä tästä $scopesta alaspäin sen alla oleville $scopeille ($emit lähettää ylöspäin). Eli jos haluaa lähettää eventin kaikille $scopeille niin pitää käyttää $rooScopea.
$on metodilla voi asettua kuuntelemaan eventtejä tietyllä nimellä.