V-model来实现子父组件的双向绑定
<div>
<input type="text" v-model="msg">
<!--等价于-->
<input type="text" :value="msg" @input="msg = $event.target.value"
</div>
v-model其实就是 :value和@input事件的简写
- 子组件:props通过value接收数据,事件触发 input
- 父组件:v-model直接绑定数据
<!--子组件-->
<select :value="value" @change="handleChange">...</select>
props: {
value: String
},
methods: {
handleChange (e) {
this.$emit('input', e.target.value)
}
}
<!--父组件-->
<BaseSelect v-model="selectId"></BaseSelect>
.sync修饰符来实现双向绑定
.sync修饰符 就是 :属性名 和 @update:属性名 合写
<template>
<div class="app">
<button @click="openDialog">退出按钮</button>
<BaseDialog :isShow="isShow"></BaseDialog>
</div>
</template>
<script>
import BaseDialog from './components/BaseDialog.vue'
export default {
data() {
return {
isShow: false,
}
},
components: {
BaseDialog,
},
}
</script>
<style>
</style>
<template>
<div class="base-dialog-wrap" v-show="isShow">
<div class="base-dialog">
<div class="title">
<h3>温馨提示:</h3>
<button class="close">x</button>
</div>
<div class="content">
<p>你确认要退出本系统么?</p>
</div>
<div class="footer">
<button>确认</button>
<button>取消</button>
</div>
</div>
</div>
</template>
<script>
export default {
props: {
isShow: Boolean,
}
}
</script>
$refs和ref获取DOM元素和组件
利用ref 和 $refs 可以用于 获取 dom 元素 或 组件实例,查找范围是当前组件内
- 给要获取的盒子添加ref属性
<div ref="chartRef">我是渲染图表的容器</div>
- 获取时通过 refs.chartRef 获取
mounted () {
console.log(this.$refs.chartRef)
}