父传子
- 父传子用到自定义属性 和 props
- 父给子组件绑定一个自定义属性 然后 子组件内接受这个自定义属性
<div id="app">
<SonCpn :fatherData="fatherData"></SonCpn>
</div>
import SonCpn from './components/SonCpn.vue'
export default {
name: 'App',
components: {
SonCpn
},
data(){
return {
fatherData:[
{
id:1,
title:'德莱文'
},
{
id:2,
title:'辛德拉'
},
{
id:3,
title:'火男'
},
{
id:4,
title:'男刀'
},
{
id:5,
title:'女坦'
},
{
id:6,
title:'泽丽'
}
]
}
},
<template>
<div>
<p v-for="item in fatherData" :key="item.id">{{item.title}}</p>
</div>
</template>
<script>
export default {
name:'SonCpn',
props:['fatherData'],
}
</script>
假设我们要在子组件中点击父组件传来的数据的某一项 并传递过去 就会用到子组件向父组件传递数据的方法
子传父
父组件需要在子组件上写一个自定义事件 然后子组件用$emit(父组件自定义事件名,需要传递的数据) 来触发父组件的事件 这样就完成了子向父传递数据
<template>
<div id="app">
<div>子组件传过来的数据为 <span>{{sonData.title}}</span></div>
<SonCpn :fatherData="fatherData" @getItem="getItem"></SonCpn>
</div>
</template>
<script>
import SonCpn from './components/SonCpn.vue'
export default {
name: 'App',
components: {
SonCpn
},
data(){
return {
fatherData:[
{
id:1,
title:'德莱文'
},
{
id:2,
title:'辛德拉'
},
{
id:3,
title:'火男'
},
{
id:4,
title:'男刀'
},
{
id:5,
title:'女坦'
},
{
id:6,
title:'泽丽'
}
],
sonData:{}
}
},
methods:{
getItem(i) {
this.sonData = i
}
}
}
</script>
<style>
span {
color: red;
}
</style>
<template>
<div>
<p v-for="item in fatherData" :key="item.id" @click="emitItem(item)">{{item.title}}</p>
</div>
</template>
<script>
export default {
name:'SonCpn',
props:['fatherData'],
methods:{
emitItem(i) {
this.$emit('getItem',i)
}
}
}
</script>
<style scoped>
p {
cursor: pointer;
}
</style>
demo效果图
|