Vuejs Get Old Value When On Change Event

October 21, 2009

When working with Vue.js, it's common to need the old value of an element when an `@change` event occurs. This can be useful for tracking changes or comparing values before and after alterations. Luckily, Vue.js provides a straightforward way to achieve this.

To get the old value when the `@change` event is triggered in Vue.js, you can utilize a combination of Vue's reactivity system and a variable to store the previous value. Here's how you can do it step by step:

1. Setup Data Variables: Begin by setting up a variable in your Vue component's data section to store the old value. For example:

Javascript

data() {
  return {
    oldValue: null,
    newValue: null
  };
},

2. Track Changes: Next, you need to update the `oldValue` variable whenever the `@change` event is triggered. You can achieve this by using a watch property to monitor changes in the `newValue` variable. Here's how you can set up the watch property:

Javascript

watch: {
  newValue(newVal, oldVal) {
    this.oldValue = oldVal;
  },
},

In this setup, whenever the `newValue` changes, the `oldValue` will be updated to the old value before the change occurred.

3. HTML Implementation: In your HTML template, you can now utilize these variables to get the old value on the `@change` event. Here's an example using a simple input field:

Html

In this input field, we are using `v-model` to bind the input value to the `newValue` variable. The `@change` event is linked to the `handleChange` method that you will define in the methods section.

4. Define the Change Handler: Lastly, define the `handleChange` method in the `methods` section of your Vue component. This method will be triggered when the input value changes, allowing you to access the old and new values. Here's an example implementation:

Javascript

methods: {
  handleChange() {
    console.log('Old Value:', this.oldValue);
    console.log('New Value:', this.newValue);
  },
},

In this method, you can now access both the old and new values whenever a change occurs.

By following these steps, you can easily get the old value when the `@change` event is triggered in Vue.js. This approach leverages Vue's reactivity system and provides a simple yet effective way to track changes in your application.