工作中记录一下:

方法一:

父组件:要写v-model:dialogVisible='',否则子组件中的$emit('update:dialogVisible', false)传不了。

<addMerchant

      v-model:dialogVisible="dialogVisibleAdd"

      :isAdd="isAdd"

    ></addMerchant>

子组件:要写 :model-value,否则可能会报v-model 不能用props。

<el-dialog

    :model-value="dialogVisible"

    :title="isEdit ? '修改商户' : '新增商户'"

    width="30%"

  >

    新增商户

    <template #footer>

      <span class="dialog-footer">

        <el-button @click="$emit('update:dialogVisible', false)"

          >取消</el-button

        >

        <el-button type="primary" @click="addMerchant()">确认</el-button>

      </span>

    </template>

  </el-dialog>

方法二:

同事说这个方法太冗余,这样做也失去了封装组件的意义,其他人或者自己过一段时间后再看这个代码会很混乱。

同事指出一句:父组件直接调用子组件的方法改变弹窗显示与否。

我的基础没有掌握牢固啊,很多东西不能灵活运用。

父组件:

<el-button type="primary" @click="this.$refs.dialogShow.dialogShow();">显示弹窗</el-button>

子组件:

dialogShow() {

      this.dialogVisible = true;

    },

这样跟不不用考虑 弹窗显示与否的 布尔值dialogVisible 在父组件与子组件之前的传递问题。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐