Vue实现用户自定义字段显示数据

Vue 3 中的逻辑抽离和字段显示 在本文中,我们将讨论如何在 Vue 3 项目中实现逻辑抽离和字段显示,并提供相应的源代码示例。组合 API 允许我们将相关的逻辑组织在一起,并将其从组件中提取出来,以便在多个组件中重用。假设我们有一个包含一些用户数据的 Vue 3 组件,我们想要显示用户的姓名和年龄。通过这种方式,我们可以将逻辑抽离到独立的模块中,并在需要的地方重用它。假设我们有一个用户详细信息组件,我们只想在用户已登录时显示用户的电子邮件地址。指令,我们可以根据条件动态地显示或隐藏字段,从而根据不同的情况提供不同的用户界面。 阅读详情

这里写图片描述

代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="../lib/vue.min.js"></script>
    <style>
        .middle::-webkit-scrollbar {height:8px;}
        /* 滚动槽 */
        .middle::-webkit-scrollbar-track {border-radius: 10px;}
        /* 滚动条滑块 */
        .middle::-webkit-scrollbar-thumb {background: #ccc;}
        * {margin: 0;padding: 0;box-sizing:border-box;font-family: "微软雅黑";}
        #tabPanel{width:1100px;height:300px;margin:100px auto;}
        .left{float:left;height:300px;width:300px;font-size:0;}
        .left .item,.right .item,.middle .item{display:inline-block;width:100px;}
        .left .item span,.middle .item span,.left .item span{display:block;height:50px;text-align:center;line-height:50px;font-size:14px;border:1px solid #eee;}
        .right .item{width:200px;height:50px;line-height:50px;text-align:center;border:1px solid #eee;}
        .right .item span{display:inline-block;border:none;color:blue;text-decoration: underline;cursor:pointer;}
        .middle{float:left;height:300px;width:300px;font-size:0;overflow-x:scroll;overflow-y:hidden;}
        .right{float:left;height:300px;width:200px;}
        #tabPanel .chooseItem {padding:10px 0;}
        #tabPanel .chooseItem label{padding:0 10px;}
    </style>
    <title>Vue实现自定义字段数据</title>
</head>

<body>

    <div id="tabPanel">
        <div class="chooseItem">
            <label @click="chooseFile()"><input type="checkbox" @click.stop="" v-model="field.weight">体重</label>
            <label @click="chooseFile()"><input type="checkbox" @click.stop="" v-model="field.inter">兴趣</label>
            <label @click="chooseFile()"><input type="checkbox" @click.stop="" v-model="field.schoold">学校</label>
            <label @click="chooseFile()"><input type="checkbox" @click.stop="" v-model="field.district">所属地区</label>
            <label @click="chooseFile()"><input type="checkbox" @click.stop="" v-model="field.class">所属年级</label>
            <label @click="chooseFile()"><input type="checkbox" @click.stop="" v-model="field.math">数学</label>
            <label @click="chooseFile()"><input type="checkbox" @click.stop="" v-model="field.chinese">语文</label>
            <label @click="chooseFile()"><input type="checkbox" @click.stop="" v-model="field.english">英语</label>
        </div>
        <div class="left">
            <div class="item">
                <span>编号</span>
                <span v-for="(item, index) in students">{{item.id}}</span>
            </div>
            <div class="item">
                <span>姓别</span>
                <span v-for="(item, index) in students">{{item.sex}}</span>
            </div>
            <div class="item">
                <span>身高</span>
                <span v-for="(item, index) in students">{{item.hight}}</span>
            </div>
        </div>
        <div class="middle">
            <div :style="{width: (length*100) + 'px'}">
                <div class="item" v-show="field.weight">
                    <span>体重</span>
                    <span v-for="(item, index) in students">{{item.weight}}</span>
                </div>
                <div class="item" v-show="field.inter">
                    <span>兴趣</span>
                    <span v-for="(item, index) in students">{{item.inter}}</span>
                </div>
                <div class="item" v-show="field.schoold">
                    <span>学校</span>
                    <span v-for="(item, index) in students">{{item.schoold}}</span>
                </div>
                <div class="item" v-show="field.district">
                    <span>所属地区</span>
                    <span v-for="(item, index) in students">{{item.district}}</span>
                </div>
                <div class="item" v-show="field.class">
                    <span>所属年级</span>
                    <span v-for="(item, index) in students">{{item.class}}</span>
                </div>
                <div class="item" v-show="field.math">
                    <span>数学</span>
                    <span v-for="(item, index) in students">{{item.math}}</span>
                </div>
                <div class="item" v-show="field.chinese">
                    <span>语文</span>
                    <span v-for="(item, index) in students">{{item.chinese}}</span>
                </div>
                <div class="item" v-show="field.english">
                    <span>英语</span>
                    <span v-for="(item, index) in students">{{item.english}}</span>
                </div>
            </div>
        </div>
        <div class="right">
            <div class="item">
                <span>操作</span>
            </div>
            <div class="item" v-for="(item, index) in students">
                <span @click="detail(item.id ,index)" :title="item.id">查看</span>
                <span @click="detail(item.id ,index)" :title="item.id">删除</span>
                <span @click="detail(item.id ,index)" :title="item.id">修改</span>
                <span @click="detail(item.id ,index)" :title="item.id">冻结</span>
            </div>
        </div>
    </div>
</body>
<script>
    var v = new Vue({
        el: "#tabPanel",
        data: {
            length: 3,
            field:{
                weight: true,
                inter: true,
                schoold: true,
                district: false,
                class: false,
                math: false,
                chinese: false,
                english: false
            },
            students:[{
                id: 1,
                name: 'zhangsan01',
                sex: '男',
                hight: '168cm',
                weight: '56kg',
                inter: '篮球1',
                schoold: '清华大学1',
                district: '湖南省1',
                class: '大学三年级1',
                math: '97',
                chinese: '98',
                english: '120'
            },{
                id: 2,
                name: 'zhangsan02',
                sex: '男',
                hight: '168cm',
                weight: '56kg',
                inter: '篮球2',
                schoold: '清华大学2',
                district: '湖南省2',
                class: '大学三年级2',
                math: '97',
                chinese: '98',
                english: '120'
            },{
                id: 3,
                name: 'zhangsan03',
                sex: '男',
                hight: '168cm',
                weight: '56kg',
                inter: '篮球3',
                schoold: '清华大学3',
                district: '湖南省3',
                class: '大学三年级3',
                math: '97',
                chinese: '98',
                english: '120'
            },{
                id: 4,
                name: 'zhangsan04',
                sex: '男',
                hight: '168cm',
                weight: '56kg',
                inter: '篮球4',
                schoold: '清华大学4',
                district: '湖南省4',
                class: '大学三年级4',
                math: '97',
                chinese: '98',
                english: '120'
            },{
                id: 5,
                name: 'zhangsan05',
                sex: '男',
                hight: '168cm',
                weight: '56kg',
                inter: '篮球5',
                schoold: '清华大学5',
                district: '湖南省5',
                class: '大学三年级5',
                math: '97',
                chinese: '98',
                english: '120'
            }]
        },
        methods: {
            //双击删除滑块
            del: function(index) {
                this.tabs.splice(index, 1);
                this.tabContents.splice(index, 1)
            },
            //编辑选项内容
            editContent: function(index, value) {
                this.tabContents[index] = value;
                console.log(this.tabContents);
            },
            chooseFile: function(){
                var val = this.field;
                //this.length = 0;
                for (i in val){
                    if(val[i]){
                        this.length = this.length + 1;
                    }
                    //console.log(val.lenght)
                }
                if(this.length > 8){
                    this.length = 8;
                }
                console.log(this.length);
            }
        },
        computed: {
            lengthb: function(){
                if(length > 6){
                    lengthb = 6
                }
            }
        },
        watch: {
            field: function(val){
                
                //console.log(this.field.lenght);
            }
        }
    });
</script>

</html>
在Vue中实现自定义字段导入Excel文件 在Vue应用程序中,有时需要从Excel文件中导入数据并进行处理。本文将介绍如何在Vue中实现自定义字段导入Excel文件的功能。最后,我们需要在Vue组件的模板中使用这些方法和数据。我们在模板中添加一个文件输入框,当用户选择文件时,然后,我们定义了一个Vue组件,其中包含一个文件输入框和一个表格用于显示导入的数据。现在,运行Vue开发服务器并访问应用程序,你将能够选择一个Excel文件并将其内容显示在表格中。最后,我们将字段和数据绑定到Vue组件的数据属性中,以便在模板中进行显示。方法来读取文件内容。 阅读详情

相关推荐

【Dv2Admin】同表单根据用户属性定制化显示列表数据

本文介绍了如何在 Django Vue Admin 系统中实现基于用户属性定制化显示数据列表的功能。通过后端序列化器的动态字段调整,结合前端的部门判断逻辑,可以轻松实现一个表单结构根据不同用户的部门展示不同的数据。这种设计不仅提高了系统的安全性,还减少了不必要的信息展示,提高了用户的工作效率。该实现方式不仅适用于教育系统,还可以广泛应用于企业、医疗、金融等各类管理系统中,帮助不同用户群体更加高效、安全地访问相关数据。

Mr数据杨 1601

vue3基础类型和引用类型,和store的使用

如果我在store创建一个变量,是读取缓存key为name的数据,store.name 默认值是张三。

坚持,努力,奋斗不止 782

Vue实现用户自定义字段显示数据的方法

今天小编就为大家分享一篇Vue实现用户自定义字段显示数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

【Vue3】element-plus表格字段内容为空时显示自定义内容

在前端用表格显示后台接口返回的列表数据,有时候有些字段内容是null,此时为了统一美观,可以使用css属性对表格空字段进行修改,使其显示自定义内容。

冷芝士鸭的学习笔记 3153

【脑电分析系列】第15篇:脑电功能连接性与脑网络分析(二):Granger因果性、图论指标与复杂网络构建

摘要: 本文深入探讨了脑电(EEG)分析中的高阶连接性方法——有效连接(Effective Connectivity),重点介绍了Granger因果性(Granger Causality, GC)的原理与应用。GC通过统计预测揭示脑区间信息流动方向,超越了传统功能连接的同步性分析。文章还结合图论指标(如度、路径长度、聚类系数和模块化)量化脑网络的拓扑结构,并通过Python代码(MNE和NetworkX库)演示了从EEG数据构建、分析复杂脑网络的完整流程。该研究为理解大脑动态互动、认知任务信息流及神经系统疾

qq_32516809的博客 1571

ENVI基于Landsat影像构建郑州市2000-2019年遥感生态指数RSEI

本文基于landsat5、landsat7、landsat8三种传感器的影像,使用ENVI软件构建郑州市2000-2019年遥感生态指数RSEI。内含ENVI详细操作、使用的公式以及构建结果。

Lexicopperfield的博客 1万+

vue数据以html显示,Vue实现用户自定义字段显示数据的方法

如下:代码:.middle::-webkit-scrollbar {height:8px;}/* 滚动槽 */.middle::-webkit-scrollbar-track {border-radius: 10px;}/* 滚动条滑块 */.middle::-webkit-scrollbar-thumb {background: #ccc;}* {margin: 0;padding: 0;box...

weixin_33253503的博客 1344

Trans论文复现:电池储能调峰和调频:超线性增益的联合优化程序代码!

本程序参考一区SCI期刊《Using Battery Storage for Peak Shaving and Frequency Regulation: Joint Optimization for Superlinear Gains》,程序。与之前将电池储能用于单一应用相比,研究结果表明,如果电池联合提供多种服务,它们可以获得比以前想象的更大的经济效益。欢迎感兴趣的小伙伴关注下方公众号获取完整版代码哦~,小编会继续推送更有质量的学习资料、文章程序代码~限于篇幅,仅列出部分算例的结果!

weixin_48747334的博客 567

iView实现表格拖拽列宽度,列显示顺序及显示字段

iView实现自定义表格

qq_36677358的博客 1454

iTerm2+oh-my-zsh最全配置

iTerm2+oh-my-zsh最全配置安装前先看效果图一.安装[iTem2](https://iterm2.com/)二.安装[oh-my-zsh](https://ohmyz.sh/)三.安装[Powerline](https://powerline.readthedocs.io/en/latest/installation.html)四.安装 [Meslo](https://github.com/powerline/fonts) 字体库五.安装agnoster主题六.安装语法高亮七.安装代码补全插件八

xinximo的博客 2611

别再傻傻分不清!5分钟搞懂倾斜摄影里‘地面分辨率’和‘模型精度’到底啥关系

本文深入解析倾斜摄影中‘地面分辨率’与‘模型精度’的关系,帮助读者快速理解两者的本质区别与内在关联。通过实战案例和公式计算,详细说明如何从航飞设计到精度验证全流程控制,避免常见认知误区,并针对不同应用场景提供精度需求建议。

weixin_33700350的博客 478

「免费开源」基于Vue和Quasar的前端SPA项目crudapi零代码开发平台后台管理系统实战之之拖拽表单定制(十六)

基于Vue和Quasar的前端SPA项目实战之拖拽表单定制(十六) 回顾 通过前一篇文章 基于Vue和Quasar的前端SPA项目实战之动态表单(五)的介绍,实现了元数据中动态表单设计功能,支持常见的数据类型和索引,然后实现了动态表单的crud增删改查功能,所有的表单页面都是默认的风格。本文主要介绍拖拽表单定制功能,通过拖拽的方式定制表单录入和编辑页面,满足了个性化需求。 简介 针对元数据表的每个字段,通过拖拽方式决定是否显示或者隐藏,然后还可以配置显示的宽度。最终以json格式保存到后台数据库,运行时根据

crudapi的博客 906

S7-1500 PLC与多台S7-200SMART PLC进行PROFINET通信的快捷方法

S7-1500 PLC与多台S7-200SMART PLC进行PROFINET通信的快捷方法

Robot_PLC_HMI_Automation 5700

vue+element ui实现依据eL-select选中的状态条件获取到的数据展示表格

<template>   <div>     <el-selectv-model="stateSelect"clearablesize="small"placeholder="状态"       class="filter-item"style="width:90px;margin-top:6px"@change="remoteMethod"filterable>     <el-op...

weixin_45030838的博客 4061

Debezium报错处理系列之第112篇:Cannot replicate because the master purged required binary logs. Replicate the

Debezium报错处理系列之第112篇:Cannot replicate because the master purged required binary logs.

zhengzaifeidelushang的博客 728

Python爬虫实战:利用Selenium与Playwright抓取美团外卖数据

在当今大数据时代,网络数据采集已成为商业分析和市场研究的重要手段。本文以美团外卖平台为例,详细介绍如何使用Python最新爬虫技术(Selenium、Playwright)进行数据采集,并探讨相关技术原理、反爬应对策略及数据存储方案。通过5000+字的详细讲解和完整代码示例,帮助读者掌握现代网络爬虫开发的核心技能。本文详细介绍了使用Python最新爬虫技术采集美团外卖数据的完整流程,涵盖了从环境配置、页面分析到数据存储的全链路解决方案。

2201_76125261的博客 2550

Java实现表单的自定义字段功能(动态管理不同类型的字段数据)

需求描述 在业务项目中有些表数据存的内容不固定,我们可以预留字段。如果后期还要扩展,可能需要增加字段来保存数据,在维护时会很麻烦不易于维护 现在我们可以使用自定义字段,可以由我们在线上管理临时添加的字段并保存在数据内 完成后的功能 在页面可以直接添加字段,配置数据类型。 添加完成后,即可在数据列表中设置自定字段的数据。 优点 无需再处理后台逻辑 线上直接完成 灵活、扩展性强 可同时扩展多个表 演示地址 用户单列表(自定义字段测试) 表设计 1:自定义字段模板表 type:配置用来扩展不同的数据

languageStudent的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

vue组件拼接两个字段的数据并显示

使用vue的elementUI组件的el-table标签展示后端返回来的数据,要对其中的两个字段进行拼接显示。

Java领域优质创作者,华为云享专家 9843

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

在vue中使用rules对表单字段进行验证

vue 中表单字段验证的写法和方式有多种,本博客介绍三种较为常用的验证方式。 1. 写在 data 中验证 表单内容 <!-- 表单 --> <el-form ref="rulesForm" :rules="formRules" :model="rulesForm" label-width="200px"> <el-form-item labe...

我的博客 11万+

SpringBoot+VUE实现数据表格

文章目录前言一、前端准备1. 基础界面2. 导入JS文件二、后端准备1. 创建实体类2. Controller层3. Service层①. UserService接口②. UserServiceImpl实现类4. Mapper层①. UserMapper接口②. UserMapper.xml文件三、前后端整合四、运行结果总结 前言 既然我已经踏上这条道路,那么,任何东西都不应妨碍我沿着这条路走下去。 还记得第一次做项目时,因为不会将数据库表中的数据渲染到前端而头疼,最后还是靠layui提供的数据表格A

世纪末的架构师的博客 1万+

vue前端自定义v-xxx指令实现根据用户权限控制元素的显示隐藏

vue前端自定义指令实现根据用户权限控制元素的显示隐藏

我总是词不达意的博客 3096

vue+element-ui 自定义表单校验(用户名、密码)

vue密码、手机号、用户名输入验证1、表单中设置prop ref 和 :rules(详情见element-ui官网)用来设置验证规则,如下:2、在data中写下具体规则,element-ui中的功能不太齐全,需要自定义,我们主要看怎么去实现自定义规则,先上rule代码代码中的validator: validUsername、validator: validatePass都是属于自定义的规则,va...

m-dididid的博客 1万+

vue根据不同权限显示图片_vue按用户权限显示内容

web项目中,不同的用户登录网站显示的内容也会不同,那前端小伙伴应该怎么去设置呢?这里我以导航栏为例,其他其他内容的话也大同小异。一、获取用去权限这个最重要的一步。因为要设置权限,所以用户数据中当然有权限的分级。所以在vue初始化的时候获取用户权限。created () {//获取当前登录用户信息this.$commonReq("/fireworks/user/info", null, (data...

weixin_36335651的博客 1022
上一篇: vuejs实现checkbox全选和全不选
下一篇: P标签里面为什么不能添加div标签
#麻辣小龙虾#
博客等级 码龄11年 1万+粉丝 235原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值