title: Ember.js - Updating a Bound Property without Triggering Local Observer
body: <p>I've created an ember component that wraps an editor (CKEditor). The editor's values are updated via setData() and getData() accessors. I want to implement two-directional binding in my ember control so that edits to the component's "content" field flow in and out of the control. </p>
  
  <p>So far, I'm able to get it going one way easily - but my attempts to go bidirectional are very messy. I can set up an observer on the property and have it update the control. However, when I try to set the property when the controller's "change" event is called, it causes the observer to be triggered. That, in turn causes the editors "change" event to trigger and so on. Welcome to Loopy Land. </p>
  
  <p>I know that there are ways to get around this - but everything that I've been trying has me coming up short. It seems hacky - not elegant like the rest of Ember. Can anyone suggest some examples that demonstrates the preferred pattern for this?</p>
  
  <p>Thanks!</p>
  
  <p>--</p>
  
  <p>(Thanks David - Here is some Additional Information)</p>
  
  <p>I've been trying the bound property thing. It works great for outbound updates (from the editor control to another bound textarea on the page) but when inbound the page starts to bog down.</p>
  
  <p>When I initialize the CKEditor, I reference a component that I installed that adds a 'change' event:</p>
  
  <pre><code>editor.on('change', this.updateContent.bind(this));
  </code></pre>
  
  <p>Here is the update content event:</p>
  
  <pre><code>updateContent: function() {
      this.set('_content', this.get('editor').getData());
  },
  </code></pre>
  
  <p>And then, the bound property:</p>
  
  <pre><code>content: function(key, val, previous)
  {
      if (arguments.length &gt; 1)
      {
          this.set('_content', val);
          var editor = this.get('editor');
          if (editor) editor.setData(val);
      }
      return this.get('_content');
  }.property('_content'),
  </code></pre>