Global events

$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.

$scope.$broadcast

$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.

$scope.$on

$on metodilla voi asettua kuuntelemaan eventtejä tietyllä nimellä.