Vue3根据动态字段绑定v-model的操作代码

目录
  • VUE动态绑定v-model变量(ui框架iview)
    • 需求
    • UI框架使用的是iview
    • 遇到的问题以及解决

因业务需要用到低代码,v-model绑定的是随机生成的

<template>
    <input type="text" v-model="form[key]">
    <button @click="submit">提交</button>
</template>
<script setup>
import { ref } from "vue"
const form = ref({})
const key = ref("input-123456")
const submit = () => {
    console.log(form.value)
}
</script>

VUE动态绑定v-model变量(ui框架iview)

需求

最近在学习vue技术,开发表格的时候,想把表格做成组件,那查询条件就需要动态生成,这就遇到一个问题,vue怎么动态给v-model变量值。

UI框架使用的是iview

页面渲染(子组件)

 <div class="ivu-card-body">
        <Form ref="formInline" v-model="formInline" inline>
          <Row type="flex" justify="end" align="middle">
            <Col
              :xs="24"
              :sm="24"
              :md="6"
              :lg="12"
              :xl="8"
              class="form-item-col"
              v-for="(formItem, formIndex) in formArray"
              :key="formItem.id"
              :value="formIndex"
            >
              <FormItem :label="formItem.label + ':'">
                <Input
                  v-if="formItem.componentType == 'input'"
                  :type="formItem.type"
                  v-model="formInline[formItem.model]"
                  :placeholder="formItem.placeholder"
                >
                </Input>
              </FormItem>
            </Col>
            <Col
              :xs="24"
              :sm="24"
              :md="6"
              :lg="12"
              :xl="8"
              class="form-item-col ivu-btn-right"
            >
              <FormItem>
                <Button
                  type="primary"
                  class="ivu-seach-btn"
                  @click="SeachHanler"
                  >搜索</Button>
              </FormItem>
            </Col>
          </Row>
        </Form>
</div>

子组件js

export default {
  name: "TableSearch",
  props: {
    formArray: {
      type: [Object, Array],
      default: () => {}, //这边是箭头函数
    },
  },
  data() {
    var dataInit = {
      formInline: {}, //查询条件form
    };
    return dataInit;
  },
  watch: {
    // 处理循环的数据
    formArray() {
       this.formArray.map((item) => {
        if (item && item.model && item.modelValue) {
          this.$set(this.formInline, item.model, item.modelValue);
        }
      });
    },
  },
  methods: {
    //搜索
    SeachHanler() {
      this.$emit("on-search", this.formInline);
    }
  },
  mounted() {},
  created() {},
};

父组件使用

  data() {
    return {
      formArray: [
      {
        componentType: "input",
        type: "text",
        model: "UserName",
        modelValue: "用户1",
        placeholder: "请输入用户名1111",
        label: "用户名111",
        id: "1",
      },
      {
        componentType: "input",
        type: "text",
        model: "Phone",
        modelValue: "11111",
        placeholder: "请输入电话",
        label: "电话",
        id: "2",
      }
    ]
    };
  },

遇到的问题以及解决

1.问题: 怎么让变量值绑定到v-model上
解决: v-model="formInline[formItem.model]"
其中formInline是在form组件上定义的一个对象

2.问题:变量值绑定上去了,怎么去让数据显示到子组件的“data”中
解决: 通过watch监听 formArray的值变化,然后使用下面的代码进行反显,不然会导致v-model绑定的变量无法修改。
this.$set(this.formInline, item.model, item.modelValue);

到此这篇关于Vue3根据动态字段绑定v-model的文章就介绍到这了,更多相关Vue3动态绑定v-model内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue3 封装自定义组件v-model的示例

    首先要注意 vue3中 v-model 默认绑定的变量名变了,从原理的 value 改成了 modelValue,如果要改变变量的值,要执行一个事件 this.$emit("update:modelValue", value); <template> <div class="inline"> <input :type="password ? 'password' : 'text'" ref="input&q

  • Vue组件上使用v-model之单选框

    先给大家介绍下Vue组件上使用v-model之单选框的实例代码. 子组件内容: <template> <div> <input type="radio" :id="valueName" :value="valueName" :checked="picked === valueName" :picked="picked" @click="$emit('change',

  • Vue3 SFC 和 TSX 方式自定义组件实现 v-model的详细过程

    目录 1 v-model 1.1 理解 v-model 1.2 案例描述 1.3 编写样式 2 编写组件 2.1 实现思路 2.2 SFC(.vue)中的实现 2.3 TSX(.tsx)中的实现 3 使用组件 1 v-model 1.1 理解 v-model v-model 是 vue3 中的一个内置指令,很多表单元素都可以使用这个属性,如 input.checkbox 等,咱可以在自定义组件中实现 v-model.v-model 本质上是一个语法糖: 绑定父组件传递过来的 modelValue

  • Vue中的v-model,v-bind,v-on的区别解析

    目录 v-model v-bind(缩写为 : ) v-on(缩写为@) 总结 v-model v-model是进行动态双向绑定的(只能用在input, textarea, select上),以input为例,进行绑定后,vue对象中data的相应值会与input的输入同步变动. // HTML <input type="text" v-model="message"> new Vue({ data { message: ' ', //最开始messag

  • vue.js学习笔记之v-bind和v-on解析

    v-bind 指令用于响应地更新 HTML 特性 形式如:v-bind:href    缩写为    :href; v-on 指令用于监听DOM事件 形式如:v-on:click  缩写为 @click; <body> <div id="test"> <img v-bind:src="src"> <a v-bind:href="url" rel="external nofollow"

  • 详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on

    Vue.js的指令是以v-开头的,它们作用于HTML元素,指令提供了一些特殊的特性,将指令绑定在元素上时,指令会为绑定的目标元素添加一些特殊的行为,我们可以将指令看作特殊的HTML特性(attribute). Vue.js提供了一些常用的内置指令,如下: v-if指令 v-for指令 v-show指令 v-else指令 v-bind指令 v-on指令 1:v-if指令 v-if指令是条件渲染指令,它根据表达式的真假来删除和插入元素,它的基本语法如下: v-if="expression"

  • Vue v-model实现案例介绍

    目录 1. 概述 2. 使用方法 3. 案例 3.1 用户登录 3.2 todolist 3.3 实现单个复选框 3.4 实现多个复选框 3.5 实现复选框全选 3.6 单选和下拉 4. v-model修饰符 4.1 lazy 4.2 trim 4.3 number 5. 案例 5.1 购物车 5.2 购物车持久化 1. 概述 v-model 是 Vue 提供的一个语法糖,它是 value 值和事件的结合体,它会根据不同的表单项,来选择执行不同的事件.它的作用是,通过和表单元素绑定,实现双向数据

  • vue3+vite中使用import.meta.glob的操作代码

    目录 前言: vue3中使用 import.meta.glob 具体方法: 前言: 在vue2的时候,我们一般引入多个js或者其他文件,一般使用  require.context 来引入多个不同的文件,但是vite中是不支持 require的,他推出了一个类似的功能,就是用import.meta.glob来引入多个,单个的文件. 这里说说他们的对比和区别: vue2 中使用  require 来引入多个不同的js文件 1.引入  modules 下的所有的js文件 const modulesFi

  • 动态设置django的model field的默认值操作步骤

    问题背景 django的model field需要动态设置默认值,具体案例如下: 原始代码如下,model是Application,其中字段ignore_fort的默认值设置为False class Application(TimestampedModel): name = models.CharField(max_length=255, null=True) ignore_fort = models.BooleanField(default=False) 然而现在有这样一个需求:default

  • Vue2.x和Vue3.x的双向绑定原理详解

    双向的绑定的原理 通过Object.defineproperty()重新定义对象属性的set方法.get方法来实现的,从这个属性中取值时会触发get方法,改变这个属性时会触发set方法,所以我们只要将一些需要更新view的方法放在这里面就可以实现data更新view了,而view更新data其实可以通过事件监听实现 当视图上的数据发生改变时, data 中的数据也发生改变当 data 中的数据发生改变时,视图中的数据也发生改变 Object.defineProperty() Object.def

  • vue3的动态组件是如何工作的

    在这篇文章中,阿宝哥将介绍 Vue 3 中的内置组件 -- component,该组件的作用是渲染一个 "元组件" 为动态组件.如果你对动态组件还不了解的话也没关系,文中阿宝哥会通过具体的示例,来介绍动态组件的应用.由于动态组件内部与组件注册之间有一定的联系,所以为了让大家能够更好地了解动态组件的内部原理,阿宝哥会先介绍组件注册的相关知识. 一.组件注册 1.1 全局注册 在 Vue 3.0 中,通过使用 app 对象的 component 方法,可以很容易地注册或检索全局组件.com

  • MongoDB进阶之动态字段设计详解

    本文主要介绍的是关于MongoDB动态字段设计的相关资料,分享出来供大家参考学习,需要的朋友们下面来一起看看详细的介绍吧. 适宜读者人群 MongoDB开发者 基础需求 产品: "我们要为现有的表单增加一个伟大的功能, 允许用户增加想要的字段" 技术目标version 1 存储动态表单数据(新增字段无需修改Schema) 首先讲一讲MongoDB支持的索引有哪几种 普通字段索引 // 假如我们的文档长这样 { "name": "MongoDB",

  • angularJs select绑定的model取不到值的解决方法

    前端直接绑定值,不传参数,controller中会一直取到初始化的值,无法实时获取前端select改变的值. 解决方法一:前端调用方法的时候,一边传参数(亲测可用) <select ng-model="speed" name="speed" ng-change="vm.h5Video().Playspeed(speed)> <option value="1" selected="selected"&

  • 使用Vue动态生成form表单的实例代码

    具有数据收集.校验和提交功能的表单生成器,包含复选框.单选框.输入框.下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展. 欢迎大家star学习交流:github地址 示例 https://raw.githubusercontent.com/xaboy/form-create/dev/images/sample110.jpg 安装 npm install form-create OR git clone https://github.com/xa

  • antd Select下拉菜单动态添加option里的内容操作

    antd Select下拉菜单动态添加option里的内容,通过form表单绑定select选中的值 提供一个公共的方法,每次只需去调用这个方法就行了 //这里是示例数据格式 let giftScope =[ { code:200, id:1, name:"张三" }, { code:300, id:2, name:"李四" }, { code:400, id:3, name:"王五" }, { code:500, id:4, name:&quo

  • TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】

    本文实例讲述了TP5框架model常见操作.分享给大家供大家参考,具体如下: 使用model 查询数据,添加数据,修改数据,删除数据 聚合操作 获取器,修改器 自动添加时间戳(创建时间,修改时间) 软删除 1.使用model查询数据 $res = User::get(1); //获取主键为1的数据,得到的是一个对象 $res = $res->toArray(); //将对象转化为数组 dump($res->name); //获取 $res 里 name 字段的值 //使用闭包函数查询 id=1

  • django 获取字段最大值,最新的记录操作

    如果是直接在数据库拉取 from django.db.models import Max Argument.objects.all().aggregate(Max('rating')) 如果是从已经存在的model列表获取 from django.db.models import Max args = Argument.objects.all() args.aggregate(Max('rating')) 获取最新的一行数据 max_rated_entry = YourModel.objects

随机推荐