title: Update angular scope without firing change events
body: <p><strong>Introduction</strong></p>
  
  <p>I' m writing checkbox tree directive using angular. Part of the behaviour is when I check checkbox in the middle of the tree, I need to unset all ancestor checkboxes and set all descendant checkboxes (see screenshot, transparent checkboxes are unchecked in fact).</p>
  
  <p><a href="https://www.dropbox.com/s/yx1bzqsamunmjpx/Screenshot%20from%202014-08-25%2018%3A39%3A44.png?dl=0" rel="nofollow">https://www.dropbox.com/s/yx1bzqsamunmjpx/Screenshot%20from%202014-08-25%2018%3A39%3A44.png?dl=0</a></p>
  
  <p>I'm using:</p>
  
  <pre><code>itemScope.$watch('checked', function setCheckboxes(newValue, oldValue) { ... });
  </code></pre>
  
  <p>For descendants everything works fine. I forEach child checkboxes and set them a new value, which in turn fires events for their descendants and so forth.</p>
  
  <p>Problem is with ancestors. If I set parent <code>checked</code> value to false, it triggers event which sets all children to false which is not desired.</p>
  
  <p><strong>Question starts here:</strong></p>
  
  <p>I need to find a way to update (ancestor checkbox) model without firing event I subscribed with <code>$watch</code>. I know one way to wrap new value assignment in <code>setTimeout(fn, 1)</code>, but I think it's not cool. What's the correct way of doing this?</p>
  
  <p>Thanks!</p>