【elementUI】form表单rules没生效

关键原则是: 中的 prop 值必须与验证规则对象中的键名完全一致 。对于嵌套属性如 info.modelId,需要在两个地方都指定完整的路径。

javascript 复制代码
<template>
  <el-form :model="editForm" ref="editRef" :rules="editFormRules">
    <el-form-item prop="sceneId" :label="t('setting.scene')">
      <el-select
        v-model="editForm.sceneId"
        :placeholder="t('common.placeholderSelect')"
        @change="handleSceneChange"
      >
        <el-option
          v-for="item in appStore.envLists"
          :key="item._id"
          :label="item.name"
          :value="item._id"
        />
      </el-select>
    </el-form-item>

    <el-form-item prop="info.modelId" :label="t('scene.menu.file')">
      <el-select v-model="editForm.info.modelId" :placeholder="t('common.placeholderSelect')">
        <el-option
          v-for="item in modelOptions"
          :key="item.modelId"
          :label="item.modelName"
          :value="item.modelId"
        />
      </el-select>
    </el-form-item>

    <el-form-item prop="type" :label="t('common.type')">
      <el-select v-model="editForm.type" :placeholder="t('common.placeholderSelect')">
        <el-option
          v-for="type in robotTypes"
          :key="type.value"
          :label="type.label"
          :value="type.value"
        />
      </el-select>
    </el-form-item>

    <el-form-item prop="info.sn" :label="t('robot.robot_no')">
      <el-input v-model="editForm.info.sn" />
    </el-form-item>

    <el-form-item prop="info.name" :label="t('robot.robot_name')">
      <el-input v-model="editForm.info.name" />
    </el-form-item>

    <el-form-item>
      <el-button @click="handleCancle">{{ t('common.cancel') }}</el-button>
      <el-button type="primary" @click="submitForm">
        {{ t('common.save') }}
      </el-button>
    </el-form-item>
  </el-form>
</template>

<script setup lang="jsx">
const editForm = ref({
  sceneId: undefined,
  type: undefined,
  info: {
    sn: undefined,
    name: undefined,
    modelId: undefined,
  },
});
// 模型选择框
const modelOptions = ref([]);
let robotTypes = dictStore.ROBOT_TYPES;

const editFormRules = ref({
  'sceneId': [{ required: true, message: t('rules.isRequired'), trigger: 'change' }],
  'info.modelId': [{ required: true, message: t('rules.isRequired'), trigger: 'change' }],
  type: [{ required: true, message: t('rules.isRequired'), trigger: 'change' }],
    'info.sn': [{ required: true, message: t('rules.isRequired'), trigger: 'blur' }],
});

const editRef = ref(null);
相关推荐
我命由我123458 小时前
CesiumJS 笔记 - 获取容器中心点、Cartesian3 clone 方法、修改 Cartesian3 对象的高度
前端·javascript·css·前端框架·html·html5·js
Hopebearer_9 小时前
页面突然只剩 DOM?一次静态资源版本错配排查
前端·部署
抱抱宝9 小时前
Agent-study项目教程(03):手写 Mini-ReAct Agent(不依赖框架)
javascript·人工智能·gpt·react.js·prompt·agent
东风破_10 小时前
ESLint 是什么?为什么你的项目需要它?
前端·后端·代码规范
用户9385156350710 小时前
Next.js 笔记系统(二):Redis 数据服务与侧边栏组件拆分实战
javascript·全栈
圣殿骑士-Khtangc11 小时前
Go字符串高效拼接性能对比与底层原理分析
服务器·前端·golang
BigTopOne12 小时前
【ijkplayer】 硬解码流程
前端
kyriewen13 小时前
DeepSeek Harness开源第一天我就上手了——和Claude Code的差距比想象中大
前端·ai编程·deepseek
捡田螺的小男孩13 小时前
什么是 Skill?手把手带你写一个简单有用的 Skill!
前端·后端·程序员
IT_陈寒13 小时前
Redis集群这个坑,差点让我通宵
前端·人工智能·后端