父组件向子组件传递数据
父组件向子组件传递数据使用自定义属性。
实例 子组件定义自定义属性。
<template>
<div id="app">
<ul>
<li v-for="item in langage">语言{{item}}</li>
</ul>
</div>
</template>
<script>
export default {
props:['langage']
}
</script>
父组件获取子组件向子组件传递数据
<template>
<div id="app">
<Son :langage="arr"></Son>
</div>
</template>
<script>
import Son from '@/components/son.vue'
export default {
data(){
return{
arr:['java','vue','python']
}
},
comments:{
Son
}
}
</script>
注意: 如果从父组件传入到子组件的对象,要在子组件中进行修改,必须要确定到对象中的每个对象属性,如果直接改变整个对象则只改变子组件,父组件不会改变,并且要修改自定义属性的话,先将自定义属性赋值到data的实例化属性中,再将实例化属性修改。
子组件向父组件传递数据
子组件向父组件传递数据使用自定义事件。
示例
实现子组件num+1,父组件的message也跟着+1.
子组件
<template>
<div id="app">
<p>{{num}}</p>
<button @click="add">点击+1</button>
</div>
</template>
<script>
export default {
data(){
return{
num:0
}
},
methods: {
add(){
this.num++
this.$emit("numage",this.num)
}
}
}
</script>
父组件
<template>
<div id="app">
<p>{{num}}</p>
<Son @numage="getnum"></Son>
</div>
</template>
<script>
import Son from '@/components/son.vue'
export default {
data(){
return{
message:0
}
},
methods: {
getnum(val){
this.message=val
}
},
comments:{
Son
}
}
</script>
|