vue中当详情、编辑共用一个弹出框时,怎么在详情中禁用所有可编辑的组件,在编辑中又能够启用它们

一般情况下,查询、详情甚至新增,都是用的同一个弹出框,但是他们的要求可能不一样。比如查询时只允许查看,不允许编辑。

我们应该如何实现,在详情中禁止组件编辑,而在编辑中又可以进行编辑呢?
要在详情中禁用所有可编辑的组件,在编辑中又能够启用它们,我们可以使用条件控制渲染来实现。

一、添加一个isEditMode布尔类型数据属性

首先,在 Vue 组件中添加一个额外的状态属性,用于控制组件的编辑模式。例如,我们可以添加一个名为 isEditMode 的布尔类型数据属性。
在这里插入图片描述

二、在需要控制的组件上绑定isEditMode属性

在下面的示例代码中,我们将两个 <el-input> 和下拉框 <el-select> 组件都绑定了 isEditMode 属性,通过 :readonly="!isEditMode":disableed="!isEditMode"来动态设置是否启用编辑模式。
在这里插入图片描述

三、在查看详情和编辑中分别控制isEditMode的状态

点击修改按钮的时候,将isEditMode状态设为true,对话框中:readonly=false,此时就是可编辑状态。
点击查看详情按钮时,将将isEditMode状态设为false,对话框中:readonly=true,此时就是不可编辑状态。
在这里插入图片描述

四、隐藏查询详情对话框的确定按钮

直接加一个v-if="isEditMode"即可,查询详情时将isEditMode设为了false,因此确定按钮就不显示了。
在这里插入图片描述

五、最终效果

查询详情:

这里的输入框是无法点击进行编辑的。

在这里插入图片描述

修改:
在这里插入图片描述
至此,我们想要的效果就已经实现了。

六、附录(完整的对话框代码)

<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="班级名称" prop="className">
          <el-input v-model="form.className" :readonly="!this.isEditMode" placeholder="请输入班级名称" />
        </el-form-item>
        <el-form-item label="年级" prop="classGrade">
          <el-select
            v-model="form.classGrade"
            :disabled="!this.isEditMode"
            placeholder="请选择年级"
          >
            <el-option
              v-for="dict in classOptions"
              :key="dict.dictValue"
              :lable="dict.dictLabel"
              :value="dict.dictLabel"
            ></el-option>

          </el-select>
        </el-form-item>
        <el-form-item label="班主任" prop="headTeacher">
          <el-input v-model="form.headTeacher" :readonly="!this.isEditMode" placeholder="请输入班主任" />
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button v-if="isEditMode" type="primary" @click="submitForm">确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>
    </el-dialog>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丿BAIKAL巛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值