父传子:props
1.在子组件的props标签里定义接收父组件数据的变量的类型,默认值等
2.在子组件标签里动态绑定父组件中的值
<div id="app">
<cpn :cfile = 'File'></cpn>
</div>
<template id="cpn">
<div>
<ul>
<li v-for = 'item in cfile'>{{item}}</li>
<li v-for = 'item in cmovies'>{{item}}</li>
</ul>
</div>
</template>
<script src="../js/vue.js"></script>
<script>
const cpn = {
template: '#cpn',
props: {
cmovies: {
type: Array,
default() {
return ['樱桃丸子','大头儿子小头爸爸']
},
},
cfile: {
required: true
}
}
}
const app = new Vue({
el:'#app',
data:{
movies:['海贼王','火影忍者','妖精的尾巴'],
File:['ff','kk']
},
components: {
cpn
}
})
</script>
子传父:$emit()自定义事件
1.子组件发射事件和要传递的数据
2. 在子组件标签里使用发射事件
3.在父组件中定义发射事件,接收到数据
<div id="app">
<cpn @item-click = 'cpnClick'></cpn>
</div>
<template id="cpn">
<div>
<button v-for='item in categorige'
@click='btnClick(item)'>
{{item.name}}</button>
</div>
</template>
<script src="../js/vue.js"></script>
<script>
const cpn = {
template: '#cpn',
data() {
return {
categorige: [
{id:'a',name:'热门推荐'},
{id:'b',name:'手机数码'},
{id:'c',name:'家用电器'}
]
}
},
methods: {
btnClick(item) {
this.$emit('item-click',item)
}
}
}
const app = new Vue({
el:'#app',
data: {
},
components: {
cpn
},
methods: {
cpnClick(item) {
console.log('cpnClick',item)
}
}
})
</script>