目录
emits节点:
在之前的我们学习过$emit的事件触发,也就是自定义事件,前期代码:
html:
<button @click.stop="event_click">+</button>
script:
event_select(){
this.$emit('itemSelected')//传递自定义事件,参数包括事件名,多传递参数。
}
父级:
@itemSelected="方法"//响应事件
之前我们一直没有声明过自定义事件名,下面我们来看看emits节点以补充之前的做法:
组件上使用v-model:
之前我们都是通过事件的传递来通过操作子组件以更新父组件中的值,进而影响子组件值得方法,这样会导致父组件中响应自定义事件的方法过多,那么这里我们可以通过组件v-model来同步父子组件的值。
示例:
父组件:
<template>
<div>
<TransDiv
v-model:num="data"
v-model:num2="data2"
></TransDiv>
</div>
</template>
<script>
import transDiv from './components/v-model的父子值同步/传值div.vue'
export default {
components: {
TransDiv: transDiv
},
data() {
return {
data: 0,
data2:0
}
},
}
</script>
子组件:
<template>
<div>{{ num }}</div>
<div>{{ num2 }}</div>
<button @click="SetRandNum">随机值</button>
</template>
<script>
import tools from "../../assets/js/MyTools";
export default {
name: "传值div",
emits: ['update:num', 'update:num2'],
props: ['num','num2'],
methods: {
//TransEvent
SetRandNum() {
this.$emit('update:num', tools.getRandInt(0, 1000))
this.$emit('update:num2', tools.getRandInt(0, 2000))
}
}
}
</script>