1.父組件的寫法
<upload-dialog :upload-visable.sync="dialogFormVisible"></upload-dialog>
2 子組件的寫法;
①父組件傳過來的值uploadVisible,子組件:visible.sync 不要直接使用,:visible.sync 重新定義一個變量,用watch 監控去關聯兩者的關系
如果不暫存,會報 Avoid mutating a prop directly since the value will be overwritten whenever
② @close 這里用:before-close也是可以的,不過用before-close需要寫成函數
<template> <div> <el-dialog title="發布版本" :visible.sync="dialogFormVisible" //本地定義的變量 @close="$emit('update:uploadVisable',false)" center > <el-form ref="dataForm" label-position="left" label-width="90px" style="width: 100%;"> <el-form-item label="版本文件"> <el-upload class="upload-demo" action="https://jsonplaceholder.typicode.com/posts/"> <el-button size="small" type="primary">點擊上傳</el-button> <div slot="tip" class="el-upload__tip"> Android文件名格式:RSpeedo_android_版本號.apk 例如:RSpeedo_android_0.1.4.apk <br />Windows文件名格式:RSpeedo_pc_版本號.exe 例如:RSpeedo_pc_1.1.7.exe </div> </el-upload> </el-form-item> <el-form-item label="升級標志"> <el-checkbox v-model="checked">強制升級</el-checkbox> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="$emit('update:uploadVisable',false)" class="rc-button__cancel">取消</el-button> <el-button type="primary" @click="dialogStatus==='create'?createData():updateData()">確認</el-button> </div> </el-dialog> </div> </template> <script> export default { name: '', props: { uploadVisable: { type: Boolean, default: false } }, data () { return { checked: false, dialogFormVisible: this.uploadVisable //初始化賦值 } }, updated () { console.log("value5:", this.dialogFormVisible) }, watch: { uploadVisable (val) { console.log("watch:", val) this.dialogFormVisible = val } }, components: {}, methods: { handleBeforeClose () { this.$emit('upload-change') } } } </script>