title: Angular JS $watch vs $on
body: <p>I want to execute a function inside a directive, whenever there is a state change in the parent scope.</p>
  
  <p>The obvious way to achieve this is to use event broadcasts (<a href="https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$broadcast" rel="noreferrer">$broadcast</a>) and listeners (<a href="https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$on" rel="noreferrer">$on</a>).</p>
  
  <p>I am curious if using a $watch is an alternative to event broadcast. If it is, how do the two compare?</p>
  
  <p>As far as I understand, the expression to be watched is evaluated every $digest cycle.
  So are events more efficient than watch?</p>