当前位置: 首页 > 知识库问答 >
问题:

vue2 - 动态表单动态渲染问题?

华凌
2023-12-01

在Vue2环境中,有一个动态表单,数据源如下:

list: [  { name: '姓名', props: 'name', show: [] },  { name: '年龄', props: 'age', show: [] },  { name: '身高', props: 'height', show: [] },  {    name: '是否合格',    props: 'isPass',    show: [      { key: 'age', symbol: '<=', value: 28 },      { key: 'height', symbol: '>=', value: 180 },    ],    value: ''  }],formData: { name: '', age: '', height: '', isPass: '' },

要实现的功能是:每个表单项根据其对象里的show来判断是否显示,如果show为空数组,代表无条件限制。
比如是否合格这一项,只有在 年龄<=28&&身高>=180 时才显示。

测试渲染代码如下:

<div class="list">  <template v-for="item in list">    <div class="item" :key="item.name">      <span>{{ item.name }}</span>      <input type="text" v-model="formData[item.props]" :placeholder="'请输入' + item.name" />    </div>  </template></div>

请问下一步该如何进行?

共有1个答案

伍心水
2023-12-01
<template>  <div class="list">    <template v-for="item in list">      <div class="item" v-if="shouldShow(item)" :key="item.name">        <span>{{ item.name }}</span>        <input type="text" v-model="formData[item.props]" :placeholder="'请输入' + item.name" />      </div>    </template>  </div></template><script>export default {  data() {    return {      list: [        { name: '姓名', props: 'name', show: [] },        { name: '年龄', props: 'age', show: [] },        { name: '身高', props: 'height', show: [] },        {          name: '是否合格',          props: 'isPass',          show: [            { key: 'age', symbol: '<=', value: 28 },            { key: 'height', symbol: '>=', value: 180 },          ],          value: ''        }      ],      formData: { name: '', age: '', height: '', isPass: '' },    };  },  methods: {    shouldShow(item) {      if (item.show.length === 0) {        return true;      }      return item.show.every(condition => {        const formValue = this.formData[condition.key];        switch (condition.symbol) {          case '<=':            return formValue <= condition.value;          case '>=':            return formValue >= condition.value;          default:            return false;        }      });    }  }};</script><style scoped></style>
 类似资料:
  • 我正在尝试使用按钮(传递给另一个组件)来切换暗模式。最初,我加载一个轻主题样式表。然后,切换主题按钮应删除页面上最新加载的样式表,并将状态设置为与当前状态相反的状态。 我的理解是,然后,useEffect将“看到”状态变化并启动。这就是我们加载新样式表的地方。应用正确加载初始样式表,切换按钮可以正常工作一次,但之后就不能正常工作。第一次更改后,它会删除所有样式。使用反应开发工具,看起来状态正在正确

  • 服务端动态渲染网页是生成网页的最常用方法, 该方法同样适用于动态生成包含 Highcharts 图表的网页。 服务端动态渲染网页的做法:后端程序读取数据库数据并按照一定的业务逻辑处理成字符串,在页面对应位置上输出。 下面我们用 PHP 举例简单说明这个过程: 实例1: 只包含数值的 <?php // php 读取数据库并生成 字符串,这里这是简单的实例 // 读取数据 while ($

  • 问题内容: 在React JSX中,似乎无法执行以下操作: 我收到一个解析错误:意外令牌{。这不是React可以处理的吗? 我正在设计此组件,以便在内部隐藏的值将包含有效的HTML元素(h1,p等)。有什么办法可以使这项工作吗? 问题答案: 您不应该将组件子弹放在花括号中: 这是一个有效的小提琴:http : //jsfiddle.net/kb3gN/6668/ 此外,您还可以找到JSX编译器,有

  • 因此,我试图用几个HTML输入创建一个动态表单。我有一个对象数组,其中包含应该呈现的的。目前,我能够呈现两个输入,如文本区域,但我如何处理收音机,复选框,选择连同他们的选项?任何帮助都将不胜感激。 请参见此CodeSandBox。

  • 本文向大家介绍ListView实现下拉动态渲染数据,包括了ListView实现下拉动态渲染数据的使用技巧和注意事项,需要的朋友参考一下 这是一篇关于LIstView实现动态数据渲染的文章!  首先我们讲讲数据是如何来规划的 一般情况下我们有两种规划方案 前提比如我们数据是100条+ 第一:一次性把100条数据fetch过来 然后由前端JS代码来做分页处理(如每次渲染10条) 第二:在server端

  • 我想在render()中动态生成输出,但遇到了一个非常奇怪的情况。我有一个使用fetch()从数据库检索数据的过程。一旦得到数据,我就确定数据记录的数量,然后执行for循环,用返回的数据填充数组。在for循环之前有一个console.log()来显示数据接收数组的内容,在填充接收数组时还有另一个console.log()。出于某种原因,在填充数组的特定引用时,数组的所有引用似乎都在更改。这是我的全