马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、介绍
作用:可以实现 子组件 与 父组件数据 的 双向绑定,简化代码
简单明白:子组件可以修改父组件传过来的props值
特点:prop属性名,可以自定义,非固定为value
但是.sync没有v-model方便,所以当属性名确定为value,即表单元素的时候,就使用v-model
**场景 ** 封装弹框类的底子组件, visible属性 true显示 false隐藏
本质 .sync修饰符 就是 :属性名 和 @update:属性名 合写
二、语法
父组件
- // .sync写法
- <BaseDialog :visible.sync="isShow" />
- --------------------------------------
- // 完整写法
- <BaseDialog
- :visible="isShow"
- @update:visible="isShow = $event"
- />
复制代码 子组件
- props: {
- visible: Boolean
- },
- this.$emit('update:visible', false)
复制代码 三、代码示例
App.vue
- <template>
- <div class="app">
- <button @click="openDialog">退出按钮</button>
- <!-- isShow.sync => :isShow="isShow" @update:isShow="isShow=$event" -->
- <BaseDialog :isShow.sync="isShow"></BaseDialog>
- </div>
- </template>
- <script>
- import BaseDialog from './components/BaseDialog.vue'
- export default {
- data() {
- return {
- isShow: false,
- }
- },
- methods: {
- openDialog() {
- this.isShow = true
- // console.log(document.querySelectorAll('.box'));
- },
- },
- components: {
- BaseDialog,
- },
- }
- </script>
- <style>
- </style>
复制代码 BaseDialog.vue
- <template>
- <div class="base-dialog-wrap" v-show="isShow">
- <div class="base-dialog">
- <div class="title">
- <h3>温馨提示:</h3>
- <button class="close" @click="closeDialog">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,
- },
- methods:{
- closeDialog(){
- this.$emit('update:isShow',false)
- }
- }
- }
- </script>
- <style scoped>
- .base-dialog-wrap {
- width: 300px;
- height: 200px;
- box-shadow: 2px 2px 2px 2px #ccc;
- position: fixed;
- left: 50%;
- top: 50%;
- transform: translate(-50%, -50%);
- padding: 0 10px;
- }
- .base-dialog .title {
- display: flex;
- justify-content: space-between;
- align-items: center;
- border-bottom: 2px solid #000;
- }
- .base-dialog .content {
- margin-top: 38px;
- }
- .base-dialog .title .close {
- width: 20px;
- height: 20px;
- cursor: pointer;
- line-height: 10px;
- }
- .footer {
- display: flex;
- justify-content: flex-end;
- margin-top: 26px;
- }
- .footer button {
- width: 80px;
- height: 40px;
- }
- .footer button:nth-child(1) {
- margin-right: 10px;
- cursor: pointer;
- }
- </style>
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |