4

I have an object with deep watch on it (true in the third argument of $watch). When the watch is triggered I want to know which property was changed. All I'm getting is the new and old value. Is there a good way to know what was changed? I don't want to compare new and old objects and search for the changed properties.

julius_am
  • 1,422
  • 2
  • 23
  • 42
  • That is just how it works. You could watch the properties individually if you really do not want to write code to figure it out. – aet Mar 16 '14 at 16:12
  • Or try something like this: http://stackoverflow.com/questions/8572826/generic-deep-diff-between-two-objects – aet Mar 16 '14 at 20:01

1 Answers1

0

Not the cleanest way, but a non pure AngularJS way to solve this is to use Object.observe() on the object instead of $watch, because it passes on the name of the changed property.

External links for Object.observe()


Another way would be to override the getters and setters on the object so they create a changed property list that is stored internally in the object. Not sure about the exact implementation of this, and it isn't that clean either.

Robin Andersson
  • 5,150
  • 3
  • 25
  • 44