- 26
- 0
前端到处需要用到e-dialog,对dialog的样式,close处理,visible处理的重复性代码很多,打算对其进行进一步封装,写一个我自己的at-dialog,里头的slot留给el-dialog,然后在index.vue的子组件testAtDialog.vue里面使用这个at-dialog。相当于用了三层父子关系,这个visible怎么样处理才能管用?下面的代码没法把el-dialog显示出来:
index.vue:
<!-- 测试代码 -->
<test-at-dialog ref="testAtDialog" :visible='testDialogVisible' />
其中的testDialogVisible在index.vue的data中定义:
testDialogVisible: { bol: false },
testAtDialog.vue:
<template>
<at-dialog ref="dialog" :visible="dialogVisible" :title="_('Test')" size="mini">
<span>This is at dialog.</span>
</at-dialog>
</template>
<script>
export default {
name: 'testAtDialog',
props: ['visible'],
data() {
return {
dialogVisible: { bol: false },
}
},
watch: {
visible: {
handler: function(val, oldval) {
this.dialogVisible.bol = val
if (val.bol) {
this.init()
}
},
deep: true,
immediate: true
},
},
methods: {
init() {
console.log('init')
},
}
}
</script>
<style lang="scss" scoped>
</style>
最后是封装了el-dialog的组件at-dialog:
<template>
<el-dialog :title="title" :visible.sync="visible.bol" class='dialog_formStyle' :width="width">
<slot></slot>
</el-dialog>
</template>
<script>
export default {
name: 'atDialog',
props: {
title: {
type: String,
default: this._("No Title"),
},
size: {
type: String,
default: "small"
},
visible: {
type: Object,
default: { bol: false }
}
},
data() {
return {
width: "600px",
};
},
watch: {
visible() {
console.log('watch visible', this.visible)
},
size() {
switch (this.size) {
case "auto":
this.width = ""
break;
case "medium":
this.width = "800px"
break;
case "small":
this.width = "600px"
break;
case "mini":
this.width = "400px"
break;
}
},
},
methods: {
closeDialog() {
this.visible.bol = false
// this.$emit('update:show', false)
},
}
};
</script>
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 11 元积分
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

