rap-2-h
rap-2-h

Reputation: 32048

VueJS get data as object

Here is a VueJS component:

<template>
  <a @click="log">click me<a>
</template>

<script>
  export default {
    data() {
      return {
        a: "a",
        b: "something",
        foo: { bar: "baz" },
        // etc.
      }
    },
    methods: {
      log() {
        // console.log( data ); 
        // ???
      }
    }
  }
</script>

I want to access the data from the log function and get it as an object (just like in its declaration). I know I can get data like this :

log() {
  console.log( this.a );
  console.log( this.b );
  console.log( this.foo );
}

But what I want is the whole data as an object (because I want to send the data via an event to a parent component).

Is there a way to get the whole data object inside a method of a component?

Upvotes: 23

Views: 43821

Answers (2)

Shubham Patel
Shubham Patel

Reputation: 3289

You can access the current component's data object using this.$data.

Reference: Link

So the log function should be like:

log() {
  console.log(this.$data.a);
  console.log(this.$data.b);
  console.log(this.$data.foo);
}

Upvotes: 51

cornernote
cornernote

Reputation: 1095

I think what you are looking for is to return the whole data object, like this:

log() {
  console.log(this.$data);
}

Upvotes: 8

Related Questions