How to observe all object property changes?

You can observe isDirty to see if any of the object’s values have been modified since last save (if you are using Ember Data).

Alternatively you can pass a comma separated list of properties to observes. This might be long if you have a lot of properties on your object, but will work.

A third approach could be to override setUnknownProperty() and set a property, a ‘dirty flag’ (or perform any action you may want in there.

There’s also an old SO post that gives the following answer:

App.WatchedObject = Ember.Object.extend({
  firstProp: null,
  secondProp: "bar",

  init: function(){
    this._super();
    var self = this;
    Ember.keys(this).forEach(function(key){
      if(Ember.typeOf(self.get(key)) !== 'function'){
        self.addObserver(key, function(){
          console.log(self.get(key));
        });
      }
    }); 
  }
});

You could probably split this out into a Mixin to keep your code DRY.

Leave a Comment