vue通过for循环生成input框后双向绑定失效问题

news2024/11/26 4:48:15

有些时候页面上有太多的表单元素,一个个的写太过繁琐,拿 input 框举例,众多的 input 框,无非就是输入框前的说明和 input 框的 name 属性不一样

<el-form :inline="true" :model="formInline" size="mini" class="demo-form-inline">
        <el-form-item label="姓名">
            <el-input v-model="formInline.name1" placeholder="请输入姓名"></el-input>
        </el-form-item>
        <!-- 当然,这里的性别应该下拉框,这里只做演示 -->
        <el-form-item label="性别">
            <el-input v-model="formInline.sex1" placeholder="请选择性别"></el-input>
        </el-form-item>
        <el-form-item label="年龄">
            <el-input v-model="formInline.age1" placeholder="请输入年龄"></el-input>
        </el-form-item>
</el-form>

既然这样,何不弄一个数组,通过 for 循环遍历出来,岂不是更省事?经过一番尝试,终于成功,特此记录,便于后续回顾及帮助到有需要的人。

1、通过 for 循环批量生成表单元素

模拟如下数据:

export default {
    name: 'BasicInfo',
    components: {},
    data() {
        return {
            formInline: {
            },
            formData: [
                {"id":"1","label":"姓名","tableColumn":"name","placeholder":""},
                {"id":"2","label":"性别","tableColumn":"sex","placeholder":"请选择性别"},
                {"id":"3","label":"年龄","tableColumn":"age","placeholder":"请输入年龄"}
            ]
        }
    },
}

页面也改成 v-for 来遍历

<el-form :inline="true" :model="formInline" size="mini" class="demo-form-inline">
	<el-form-item 
	    v-for="item in formData" 
	    :index="item.id" 
	    :key="item.id" 
	    :label="item.label"
	>
	    <el-input 
	    v-model="item.tableColumn" 
	    :placeholder="item.placeholder"
	    ></el-input>
	</el-form-item>
</el-form>

2、发现呈现的效果与预期的不符合

在这里插入图片描述
参考了几篇网友的解答
vue.js中 v-for 下的v-model 双向绑定失效的解决方法
v-for渲染input的坑!!!vue中v-for出来的input如何实现双向绑定
vue for循环v-model双向绑定对象/数组失效

后面自己试了下,改了下 v-bind 处的写法后,就可以了

3、修改 v-bind 处的写法

<el-form :inline="true" :model="formInline" size="mini" class="demo-form-inline">
	<el-form-item 
	    v-for="item in formData" 
	    :index="item.id" 
	    :key="item.id" 
	    :label="item.label"
	>
	    <el-input 
	    v-model="formInline[item.tableColumn]" 
	    :placeholder="item.placeholder"
	    ></el-input>
	</el-form-item>
</el-form>

4、最终效果与预期一致:

借助 Vue 开发工具可以看到,已经实现了双向绑定

借助 Vue 开发工具可以看到,已经实现了双向绑定

5、探索其他问题

看了前面几篇博客,有的往 标签里动态绑定了一个 prop 属性,刚开始不清楚啥意思,看了下文档说用于表单校验和重置表单的
在这里插入图片描述
于是就做了下测试:

<el-form-item 
            v-for="item in formData" 
            :index="item.id" 
            :key="item.id" 
            :label="item.label"
            :prop="item.tableColumn"
            :required="item.required"
            inline-message="true"
            :rules="{ required: true, message: `${item.label}不能为空`}"
        >
        <!-- :rules="[
            { required: true, message: '年龄不能为空'},
            { type: 'number', message: '年龄必须为数字值'},
            { required: true, message: '请输入邮箱地址', trigger: 'blur' },
            { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
        ]" -->
            <el-input 
            v-model="formInline[item.tableColumn]" 
            :placeholder="item.placeholder"
            
            ></el-input>
 </el-form-item>

结果证实了
在这里插入图片描述

6、绑定 prop 属性后浏览器会有莫名其妙的红色警告问题

在这里插入图片描述
此问题参考了这篇文章:
The label’s for attribute doesn’t match any element id…的解决办法
在这里插入图片描述
打开浏览器开发者工具,可以看到,vue文件里的 最终被解析成了

<el-input 
	v-model="formInline[item.tableColumn]" 
	:placeholder="item.placeholder"
	:id="item.tableColumn"
></el-input>

The End!感谢参考的这几篇文章的作者,正是因为有你们的分享,像我这样的小白遇到问题时才得已解决,所以我也向你们学习,将遇到的问题记录下来,以加深印象,也能让需要的人得到参考!
由于时间有限,此例子可以做得更好,比如:动态实现下拉框、多选等…,类似代码生成器那种,有时间了琢磨下后再记录!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1689066.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言-atoi()库函数的模拟实现

文章目录 前言一、atoi()库函数的介绍及使用1.1 atoi()库函数介绍1.2 atoi()库函数使用 二、atoi()库函数的模拟实现2.1 函数设计2.2 函数实现思路2.3 具体实现2.4 测试 总结 前言 本篇文章介绍c语言中库函数atoi()的使用&#xff0c;以及模拟实现库函数。 一、atoi()库函数的…

allegro 无法删除Xnet

allegro 无法删除Xnet Orcad中打开Constraint Manager之后&#xff0c;再生成网表&#xff0c;导入PCB后就会出现一堆Xnet网络。无法去除Xnet。 解决办法 在原理图ORCAD中&#xff0c; 1、打开Edit Object properties 2、选择Filter by:Capture 3、点击New Property 4、设置…

开源博客项目Blog .NET Core源码学习(25:App.Hosting项目结构分析-13)

本文学习并分析App.Hosting项目中后台管理页面的文章管理页面。   文章管理页面用于显示、检索、新建、编辑、删除文章数据&#xff0c;以便在前台页面的首页、文章专栏、文章详情页面显示文章数据。文章管理页面附带一新建及编辑页面&#xff0c;以支撑新建和编辑文章数据。…

5月20日分割等和子集+最后一块石头的重量Ⅱ

416.分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] 和…

Qt moc系统的黑魔法?

Qt的元对象系统&#xff08;Meta-Object System&#xff09;是Qt框架的核心功能之一&#xff0c;为C语言增加了一些动态特性&#xff0c;借助元对象系统Qt可以实现以下功能 信号与槽机制&#xff08;Signals and Slots&#xff09;运行时类型信息&#xff08;Run-Time Type In…

激光雷达和相机外参标定

1、外参标定标定什么&#xff1f; 标定激光雷达和相机之间的相对位置&#xff0c;变换矩阵T 2、原理 通过激光扫描出来的轮廓和相机识别出来的栅格的轮廓进行PNP匹配。 3、论文

IDEA的妙用

IDEA 安装破解 复制JetbrainsIdesCrack-4.2.jar到安装目录下 修改安装目录下的bin目录的idea64.exe.vmoptions&#xff1a; 最后一行添加&#xff1a;-javaagent:E:\develop\JetBrains\IntelliJ IDEA 2018.3.5\bin\JetbrainsIdesCrack-4.2.jar(注意&#xff1a;使用自己的路…

大模型时代,掌握Event Stream技术提升Web响应速度

大模型时代,每天搜索都可能会用到一种或多种大模型,在大文本输出的时候,页面是一字一字,一段一段的慢慢输出出来的,这背后是如何实现的呢?我们以KIMI为例 先抓个请求 我们发现界面展示是一句话,但是接口返回的时候是一个字一个字的。 普通请求 多了Event Stream的处理 …

OS复习笔记ch5-5

引言 上文我们了解了一些关于信号量机制的一些经典应用&#xff0c;知识点比较繁杂&#xff0c;可能会有点啰嗦&#xff0c;但是对初学者而言还是越详细越好。接下来我们介绍一下管程。 管程 管程是程序设计语言结构&#xff0c;可提供易于控制的同步机制&#xff0c;我们熟…

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (十一)

基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;十一&#xff09; LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 Lla…

【网络安全】2030年十大新兴网络安全威胁

欧盟网络安全局&#xff08;ENISA&#xff09;已发布了一份全面的清单&#xff0c;列出了预计到2030年将影响数字领域的十大新兴网络安全威胁。 该预测是为期八个月的广泛研究的成果&#xff0c;融合了ENISA前瞻专家小组、CSIRTs网络以及欧盟CyCLONe专家的见解。 这项研究突显…

Wpf 使用 Prism 实战开发Day23

自定义对话框服务 当原有对话框不能满足需求的时候&#xff0c;可以通过自定义对话框来实现特殊的需求 一.自定义对话框主机服务步骤&#xff1a; 1.建立一个IDialogHostService 接口类&#xff0c;继承自 IDialogService 对话框服务类。并且自定义基类的服务方法。 public …

真实案例分享,终端pc直接telnet不到出口路由器。

1、背景信息 我终端pc的网卡地址获取的网关是在核心交换机上&#xff0c;在核心交换机上telnet出口路由器可以实现。 所有终端网段都不能telnet出口路由器&#xff0c;客户希望能用最小的影响方式进行解决。 2、现有配置信息 终端的无线和有线分别在两个网段中&#xff0c;…

案例题(第一版)

案例题目 软件架构设计考点&#xff08;历年必考&#xff09; 软件架构设计通常在每年的第一题&#xff0c;该题必考 必备概念 必备概念即考试必须要默写出来的概念 概念描述软件架构风格是指描述特定软件系统组织方式和惯用模式。组织方式描述了系统的组成构件和这些构件的组…

从“图形可视化”到“图生代码”,低代码平台的新挑战

前言&#xff1a; 低代码平台最大的一个特点就是可视化&#xff0c;将代码采用可视化的方式展示管理。一时间拥有图形化界面的各类系统都挂上了低代码的标签。但更多的代码从业者在使用中却发现&#xff0c;在众多的低代码平台中都是“别人家的代码”其可视化主要是别人家的代…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-23.1,2 讲 I2C驱动

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

SpringBoot+layuimini实现角色权限菜单增删改查(layui扩展组件 dtree)

角色菜单 相关组件方法效果图MySQL代码实现资源菜单树组件实现权限树方法js这里我先主要实现权限树的整体实现方法&#xff0c;如果是直接查看使用的话可以只看这里&#xff01; 后端代码Controlle层代码Service代码及实现类代码Service代码ServiceImpl代码 resourceMapper 代码…

指数分布的理解,推导与应用

指数分布的定义 在浙大版的教材中&#xff0c;指数分布的定义如下&#xff1a; 若连续型的随机变量 X X X的概率密度为&#xff1a; f ( x ) { 1 θ e − x θ , x>0 0 , 其他 f(x) \begin{cases} \frac{1}{\theta} e^{-\frac{x}{\theta}}, & \text{x>0}\\ 0, &a…

Jenkins 构建 Web 项目:构建服务器和部署服务器分离的情况

构建命令 #!/bin/bash node -v pnpm -v pnpm install pnpm build:prod # 将dist打包成dist.zip zip -r dist.zip dist

BLE学习笔记(0.0) —— 基础概念(0)

前言 &#xff08;1&#xff09;本章节主要是对BLE技术进行简单的介绍&#xff0c;熟悉蓝牙技术的发展过程&#xff0c;了解相关术语方便后续的学习。 &#xff08;2&#xff09;为了防止单篇博客太长以至于看不下去&#xff0c;因此我基础概念章节分为两篇来写。 &#xff08;…