【前端vue2 + element ui】Dialog 对话框:.vue组件跳转
- 写在最前面
- 一、父组件调用
- 1、`<template>`
- 1.1 跳转位置
- 1.2 弹窗调用
- 2、`<script>`
- 2.1 import
- 2.2 export
- 2.3 methods
- 二、子组件调用
- 1、`<template>`
- 2、`<script>`
- 2.1 export
- 2.2 watch和methods并列
- 2.3 methods
写在最前面
背景:vue2 + element ui
子组件里面写Dialog 对话框,父组件直接调用
如果在子组件关闭了Dialog 对话框,那么:
①在子组件可见状态是false
②在父组件可见状态是true
会导致按<跳转按钮>无法跳出弹窗
所以需要:
①Dialog 对话框父组件、子组件双向绑定可见状态,才能控制可见状态的false
②Vue组件中的一个[watch
]属性,用于监视visible
属性的变化
一、父组件调用
1、<template>
1.1 跳转位置
<el-table-column prop="stnm" label="测站名称" sortable="custom"><template slot-scope="scope"><el-button type="text" @click="handleClickstnm(scope.row)">{{ scope.row.stnm }}</el-button></template></el-table-column>
1.2 弹窗调用
写到最后面
<!-- 跳转Dialog --><FlowMeasurement ref="childRef" :visible="createvisible" :type="type" :stnmdata="stnmdata"@close="CloseMeasure" /></div>
</template>
2、<script>
2.1 import
引用子组件
import FlowMeasurement from './FlowMeasurement.vue';
2.2 export
声明组件
export default {components: {FlowMeasurement},
data中声明可见状态
data() {return {type: '',createvisible: false,stnmdata: {},
2.3 methods
methods: {// 关闭弹窗CloseMeasure() {this.createvisible = false},// 点开弹窗handleClickstnm(stnm) {console.log(stnm)this.createvisible = truethis.type = 'view'this.stnmdata = stnm},//或者handleClickstnm() {console.log(this.createvisible)this.createvisible = true},
二、子组件调用
1、<template>
开局弹窗声明
<el-dialog title="测站信息新增" :visible.sync="createvisible" width="80%" @close="CloseMeasure" demo-form>
2、<script>
2.1 export
新声明name,然后传值。
需要确认一下,props传值是visible(后面watch函数监听的变量)
export default {name: 'FlowMeasurement',props: {visible: {type: Boolean,default: false},type: {type: String,default: ''}},
2.2 watch和methods并列
这段代码是Vue组件中的一个[watch
]属性,用于监视visible
属性的变化。每当visible
属性的值发生变化时,这个监视器(watcher)就会被触发,并执行相应的函数。
具体来说,这个函数做的事情是:
- 监视
visible
属性的值。 - 当
visible
的值发生变化时(无论是从true
变为false
,还是从false
变为true
),将这个新的值赋给[createvisible
]属性。
这样做的目的通常是为了同步两个属性的值,使得[createvisible
]的值总是跟visible
保持一致。这在Vue组件中是一种常见的模式,用于在组件内部响应外部传入的props变化。
watch: {visible(val) {this.createvisible = val;}},
2.3 methods
this.$emit('close')
很重要,否则会关闭后再次点击打不开了。
因为关闭后显示状态为true,但是没有显示
显示状态和bool冲突
methods: {// 右上角关闭按钮CloseMeasure() {this.createvisible = falsethis.$emit('close')},
CloseSuccess
欢迎大家添加好友交流。