melanke / Watch.JS

watch the changes of any object or attribute
Other
2.14k stars 219 forks source link

Complete path of changed object #77

Open qualityking opened 10 years ago

qualityking commented 10 years ago

Currently if i am changing something at level2 or level3 it just show me property name which got changed, but not full path

var root= {
  level1 : {
    something : 'at level 1',
    level2: { something : 'at level2', 
        level3: {
                something : 'something at level3'
            }
        }
  }
}

watch(root,  function(prop, action, newvalue, oldvalue){
        alert(prop+" - action: "+action+" - new: "+newvalue+", old: "+oldvalue+"... and the context: "+JSON.stringify(this));
    });

root.level1.level2.level3.something = 'updated at level3'

Any possibility that i will get "root.level1.level2.level3.something" rather than just "something" because property "something" is available at all levels.

Well i just want to thank you for this great efforts!!!

grofit commented 8 years ago

:+1: This is something I need at the moment, @qualityking did you find a way around this in the end?

grofit commented 8 years ago

I have tried to implement this myself but it seems a bit chaotic and I cannot for the life of me get the path to append, so I can get the end property no problem but keeping the whole route to that object in scope seems a nightmare. @melanke is there any chance you could offer some guidance as to where this sort of change would need to happen, as adding a final arg propertyPath and appending to it every time it goes to a nested object does not seem to persist when it gets to the final object, but it could just be me missing a step.

utillity commented 7 years ago

I'd need this, too!

grofit commented 7 years ago

I dont think this is getting added any time soon, I ended up creating my own primitive watcher library specifically for the validation lib I was using watcher for, incase it is of help to anyone else source is here:

https://github.com/grofit/treacherous/blob/master/src/watcher/model-watcher.ts

adelriosantiago commented 7 years ago

+1 I need this too! @melanke this would be a good feature. Any idea how to implement it?

grofit commented 7 years ago

One tricky bit is also workout out how to spit out array routes, like I ended up needing stuff like:

someObject.someProperty.withAnArray[2].name;

Indicating name had changed in that path.

melanke commented 6 years ago

This is really useful, I will try to implement

softmantk commented 5 years ago

Is there any update of this enhancement ? @melanke

melanke commented 5 years ago

No, I didn't even tried, I forgot about it, maybe I will try to fix, but no rush... I will accept pull requests