in my app written with VueJs 2, I have into the Vue.app this code:
export default {
name: 'app',
data () {
return {
title: 'Gestione fornitori',
idfornitore: ''
}
},
methods: {
loadFunction (route) {
this.$router.push(route)
}
}
}
</script>
I wish to access the property idfornitore
from another component, I've used:
mounted () {
this.$parent.idfornitore = ''
},
or also:
mounted () {
var Vue = require('vue')
Vue.app.idfornitore = ''
},
But it didn't worked. Which is the correct way to access the property from another component?
Thank you in advance.
Use props to communicate data from parent to child.
Emit events to communicate from child to parent
Parent.vue
<template>
<div>
<h2>Parent: {{idfornitore}}</h2>
<child :idfornitore="idfornitore" @changevalue="idfornitore = $event"></child>
//idfornitore - data sent to child from parent.
//changevalue - event emitted from child and received by parent
</div>
</template>
<script>
import Child from './compname.vue';
export default {
components:{
"child" : Child
},
data(){
return {
idfornitore : "34"
}
}
}
</script>
Child.vue
<template>
<div>
Child: {{idfornitore}}
<button @click="add()">Add</button>
</div>
</template>
<script>
export default {
props:["idfornitore"],
methods : {
add(){
this.idfornitore++; // mutating props directly will result in vuejs warning. i have used this code here to show how this works.
this.$emit("changevalue",this.idfornitore); //cascade the update to parent
}
}
}
</script>