Element el-switch 循环数据使用方法

本文介绍了一种使用Vue实现的表格组件案例,该组件通过循环渲染数据列表,并为每条记录配备一个开关按钮。当开关状态改变时,会触发相应事件进行数据过滤与更新,并最终形成用于提交的数据格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构层:

<div v-for="(item, index) in dataList" :key="index">
          <el-row :gutter="20">
            <el-col class="col-text" :span="14">
              {{ item.text }}
            </el-col>
            <el-col :span="6">
              <el-switch
                v-model="item.switchValue"
                active-color="#45cdff"
                inactive-color="#d6d6d6"
                @change="switchChange"
              >
              </el-switch>
            </el-col>
          </el-row>
</div>

dataList数据格式:

dataList: [
        {
          text: 'xx工程师是否按约定时间上门',
          switchValue: true,
          type: '1001'
        },
        { text: '是否主动出示上岗工作牌', switchValue: true, type: '1002' },
        { text: 'xx完毕后是否逐项检查正常', switchValue: true, type: '1003' },
        {
          text: 'xx完毕后是否清洁设备和现场',
          switchValue: true,
          type: '1004'
        }
],

逻辑层:

//  评论switch
    switchChange(val) {
      let arr = JSON.parse(JSON.stringify(this.dataList))
      console.log(arr, 'dataList')
      arr.filter((obj) => obj.switchValue !== val)
      let newArray = arr.filter((item) => {
        return item.switchValue
      })
      console.log(newArray, '过滤后数据')
      let array = []
      newArray.forEach((item) => {
        array.push(item.type + '#' + item.text + '#1')
        this.appraiseForm.aoIdDesResult = array.toString()
      })
      console.log(array, '拼接数据')
    },

打印数据:
在这里插入图片描述
效果如下:
在这里插入图片描述

### Vue Element-UI 动态生成 `el-form-item` 的表单验证 为了处理动态生成的 `el-form-item` 并对其进行有效的表单验证,可以采用如下策略: #### 绑定唯一的 prop 属性 对于每一个动态生成的 `el-form-item`,确保其拥有独一无二的 `prop` 属性。这可以通过结合索引或者其他唯一标识符来实现。例如,在表格内创建多个表单项时,可以根据每一行的数据位置构建特定路径作为 `prop` 值。 ```html <template> <el-form ref="dynamicForm"> <!-- 循环遍历数据列表 --> <div v-for="(item, index) in formData" :key="index"> <el-form-item :label="'Item ' + (index + 1)" :prop="'formData.' + index + '.value'" :rules="getRules(index)"> <el-input v-model="item.value"></el-input> </el-form-item> </div> </el-form> </template> <script> export default { data() { return { formData: [ { value: '' }, // 更多条目... ] }; }, methods: { getRules(index) { const baseRule = [{ required: true, message: '此项不能为空', trigger: 'blur' }]; // 可在此处根据不同条件返回不同的规则集 if (someConditionMetByIndex(index)) { return [...baseRule]; } else { return []; } }, someConditionMetByIndex(/* 参数 */) {/* 实现逻辑 */}, validateForm(callback) { this.$refs.dynamicForm.validate((valid) => { callback(valid); }); } } }; </script> ``` 上述代码展示了如何为每个 `el-form-item` 设置独特的 `prop` 和相应的验证规则[^2]。每当新增或移除某一项时,整个表单结构都会被重新评估,从而保证最新的状态能够反映到视图上。 #### 使用计算属性管理复杂规则 如果某些字段之间的依赖关系较为复杂,则推荐利用 Vue.js 提供的计算属性(computed properties),以便更灵活地控制这些关联性的变化。比如针对发布日期的选择情况调整后续输入框是否必需填写的状态。 ```javascript computed: { customTimeIsRequired() { let selectedOption = this.releaseOptions.find(option => option.checked); switch(selectedOption.label){ case "自定义时间": return true; default: return false; } } } ``` 随后可以在模板中依据此布尔值决定应用哪套验证规则给目标组件[^3]。 #### 手动触发验证刷新 有时即使修改了 `rules` 或者更改了影响验证的因素之后,仍然可能出现旧有的错误提示未消失的情况。此时可通过调用 `this.$forceUpdate()` 来强制让组件更新显示;或者尝试先清除现有验证结果再执行新的验证操作,即依次调用 `clearValidate()` 方法和 `validateField()` 方法。 综上所述,通过合理配置 `prop` 字段、运用计算属性简化复杂的业务逻辑判断以及适时手动干预验证流程等方式,即可有效解决 Vue 中使用 Element UI 构建动态表单遇到的各种挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值