CopyPastor

Detecting plagiarism made easy.

Score: 0.8302298462909201; Reported for: String similarity Open both answers

Possible Plagiarism

Plagiarized on 2019-06-12
by Sabee

Original Post

Original - Posted on 2016-12-14
by Viplock



            
Present in both answers; Present only in the new answer; Present only in the old answer;

If I understood, you want to watch a specific prop in your array of objects. Please check this example on [codepen][1]. In this example I created a method in which the old value will be stored in a separate variable. You can also delay the changes in watcher wit setTimeout function if you want.
new Vue({ el: '#app', methods: { setValue: function() { this.$data.oldPeople = _.cloneDeep(this.$data.people); }, }, mounted() { this.setValue(); }, el: '#app', data: { people: [ {id: 0, name: 'Bob', age: 27}, {id: 1, name: 'Frank', age: 32}, {id: 2, name: 'Joe', age: 38} ], oldPeople: [] }, watch: { people: { handler: function (after, before) { // Return the object that changed var vm = this; let changed = after.filter( function( p, idx ) { return Object.keys(p).some( function( prop ) { return p[prop] !== vm.$data.oldPeople[idx][prop]; }) }) // Log it vm.setValue(); console.log(changed) }, deep: true, } } })
[1]: https://codepen.io/spigel-jack/pen/NZqqVr
I have changed the implementation of it to get your problem solved, I made an object to track the old changes and compare it with that. You can use it to solve your issue.
Here I created a method, in which the old value will be stored in a separate variable and, which then will be used in a watch.
new Vue({ methods: { setValue: function() { this.$data.oldPeople = _.cloneDeep(this.$data.people); }, }, mounted() { this.setValue(); }, el: '#app', data: { people: [ {id: 0, name: 'Bob', age: 27}, {id: 1, name: 'Frank', age: 32}, {id: 2, name: 'Joe', age: 38} ], oldPeople: [] }, watch: { people: { handler: function (after, before) { // Return the object that changed var vm = this; let changed = after.filter( function( p, idx ) { return Object.keys(p).some( function( prop ) { return p[prop] !== vm.$data.oldPeople[idx][prop]; }) }) // Log it vm.setValue(); console.log(changed) }, deep: true, } } })

**See the updated** [**codepen**][1]
[1]: http://codepen.io/anon/pen/NbOBJK

        
Present in both answers; Present only in the new answer; Present only in the old answer;