基于数据驱动设计复杂页面

ArcGIS中如何运用数据驱动页面批量出图 如何使用ArcGIS的数据驱动页面来批量出图。在地理信息系统(GIS)的世界里,批量出图是一项常见的任务,尤其是在需要处理大量地图输出时。这不仅能够节省时间,还能保持地图的一致性。今天,我将带你走进我的工作流程,看看如何通过ArcGIS的数据驱动页面来实现这一目标。 阅读详情

背景介绍:

最近公司启动了一个新的版本,我负责的一个的模块中有一个很复杂的新建的页面,表格里嵌套表格,三层数据,数据级联,组件较多.交互复杂,

下面是我做的一个简略图,为了保密我已将需求细节隐藏.(PS:没有table组件的墨刀,掩面苦笑,真难用)

从整个页面上分析,整体分为二部分,表单FA列表和表格TA

表单FA列表可以新增,删除,设为默认,其中一些表单项要求可以边输入边检索,选中选项后,自动将其他表单项填充

表格TA 首先是行内编辑,其次是行内的表单项之间存在级联关系,就是说,必须选中前一个行内表单,下一个表单项才有备选项,每个表单的备选项都是根据前面表单项变化而变化.

以上是表单TA的一条记录的行内编辑,这条记录的操作列有一个编辑按钮和删除按钮,点击编辑在此条记录的下方展示一个表单FB,

表单FB又包含一个表格TB和一个表单FC列表 表格TB可以增加记录,删除记录,记录中是行内编辑,编辑项也是级联的表单项

表达FC列表也是可以增删的. 表单FB有一个保存和取消按钮, 取消可以还原上次数据.

分析设计:

背景和要求都介绍清楚了,下面我们来分析一个这个页面,

刚刚拿到这个页面设计图的时候真的是一脸懵逼,多个表格嵌套还不算难,但是点击表格中编辑操作在此条记录下显示编辑的表单,这个要怎么实现.因为每条记录都是用 <tr> 在二个<tr>中夹在一个表单,这可能会破坏table的标签结构,导致table渲染错误,而且非常不好处理记录与表单的关联关系. 当时我的内心是一万个拒绝的.但是,但是,但是.....我没有当面拒绝而是先默不作声,会后再下去搜索资料,分析方案.虽然产品的要求很奇葩,而且这样设计也可能有很大风险,比如,页面逻辑不清,操作复杂,用户不会操作,但是内心有一个声音在向我说明,你进度的机会来了,你不是做够了那些只要拷贝一份就能满足要求的页面了吗?这个页面就当你晋级的考验吧.去满足它吧,满足那个频繁修改原型的产品.虽然这东西做出来也不一定见得好用.

闲话就聊到这里,我来说一下查的资料,我们使用的技术栈是vue,ele 于是我去看了一下ele的table组件,发现了这个

看了这种效果确实是可以实现的,于是F12开始分析表格结构

由此可见,在表格的tr中 第一个tr是正常的表格行,紧跟着的第二行是扩展表单,使用<td colspan="4"> 合并列,使其呈现出非表格样式,既然是这样的话,那我们在渲染表格的时候,就需要二条数据渲染成一条记录,另外一条在点击编辑按钮后显示.这个难题解决了...

接下来开始设计数据结构,别慌在这之前我想先谈一下前端数据驱动的页面设计

数据驱动:

关于数据驱动有的人解释为:当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom

相比以往jquery那种拿到数据后再使用选择器,操作dom的方法渲染页面,数据驱动有很好的扩展性和效率,要想改变页面,直接操作数据,多一条,少一条都可以直接在页面上反应出来.这也是得益于目前前端框架的飞速发展.这种数据驱动的方法解放了前端开发人员的双手,很少再去使用append,inserBefore等方法去去操作dom,直接在数组push一条数据就能立即在页面上体现出来.大大提高了效率和可维护性,扩展性.同时对于复杂页面也要求开放人员有一定的数据接口知识.

数据结构:

根据分析我设计的页面的大致数据结构为

const FAList = [] // FA表单列表对象
const TATable = [
  { // 正常tr对象
    formItem: {}, // 其他表单项
    expandContent: { // 扩展内容
      formItem: {}, // 其他表单项
      TBTable: [], // TB 表格数据
      FCForm: [] // FC 表单列表数据
    },
    expand: false, // 是否是扩展
    show: true // 是否显示
  },
  { // 合并tr 扩展对象
    formItem: {}, // 其他表单项
    expandContent: { // 扩展内容
      formItem: {}, // 其他表单项
      TBTable: [
        {
          firstFormItem: '', // 选择的第一级数据
          secondFormItem: '', // 选择的第一级数据
          thirdFormItem: '', // 选择的第三级数据
          secondArr: [], // 备选的第二级数据
          thirdArr: [] // 备选第三级数据
        }
      ], // TB 表格数据
      FCForm: [] // FC 表单列表数据
    },
    expand: true, // 是否是扩展
    show: true // 是否显示
  }
]

 

第一条数据与第二条数据唯一的区别在expand属性,这个属性表示是否是扩展, 第二条始终是扩展对象,并且是否显示使用show这个属性来控制.由于每个级联的待选项都是独立的,所以直接将其设计到表单项里是比较稳妥的,虽然这会使数据对象庞大,更新缓慢,索引问题.

开发:

到了实际开发的时候

使用

<tr v-for="(item,index) in TATable" :key="index">
 <template v-if="!item.expand">
    <td></td>    <td></td>    <td></td>    <td></td>    <td></td>
 </template>
 <template v-if="item.expand && item.show">
    <td colspan="5">
    </td>
 </template>
这段代码很重要,使用template标签做判断,在渲染时是不会渲染出来的,所以不会影响table的结构.

由于数据层层嵌套所以在渲染的时候需要特别注意一下 关于索引的问题,在处理添加,删除的函数了必要要用到索引,要注意是用的那一层的索引,还是二层的索引都需要.索引的维护也是一件很头疼的事.

另外有的时候事件处理函数可以直接传递对象 如更改firstFormItem 第一级数据,需要动态更改修改第二级第三级相关的数据,这个是时候就可以在dom上这样注册事件

<tr v-for="(serviceItem,serIndex) in methodBoList" :key="serIndex">
  <td>
    <el-select placeholder="第一级"
               @change="changeInnerBusinessLine(serviceItem)" v-model="serviceItem.businessLine" clearable>
      <el-option v-for="(litem,lindex) in bigComprehensive" :label="litem.bigClassName"
                 :value="litem.bigClassCode"
                 :key="lindex"></el-option>
    </el-select>
  </td>
....
</tr>

 

直接将serviceItem传入到处理函数中,在处理函数中将第二级,第三级相关数据改变.这样页面也会刷新

在开发中还遇到了一个问题,让我重新思考vue框架的父子组件的传值方式是否能否扩展,这个问题是这样的

在表单FA列表中有一个这样的表单项,能够输入,能够选,选择一个后,需要将其他表单项自动填充,由于是表单列表,在选择后.必然需要在回调函数里确定是当前列表中的那个对象.但是子组件注册回调函数时却不能包含父组件的变量,而且也不能在函数名后加括号(),

<child @cb="cb"></child>
<child @cb="cb()"></child>

第二种写法会报错.

最后实在没办法了,只能在点击子组件时获取索引保存起来,然后在选择后的回调函数中使用保存的索引找到要操作的对象进行更新数据.

不知道路过的大佬有什么好的办法,指点一下...... 这个问题可以总结为 在子组件的回调函数中如何添加父组件变量?

效果图:

效果图等我做个简单demo在放吧,最近忙着赶产品经理修改的需求

总结:

  • 数据结构真的很重要
  • 在拒绝之前要有理由说服自己,这个确实不能实现 或许真就是你晋级的机会
  • 设计的时候多考虑一下扩展性,因为你的产品经理很快就会改需求
  • 想要超越自我,就去实现一个能根据机壳自动调整手机主题的功能,

   谢谢阅读.如果觉得对你有帮助请记得点赞或收藏.欢迎留言讨论.你的支持是我出产优秀博客的动力.

Selenium自动化测试框架实战:应对亚马逊复杂页面的分层架构与数据驱动设计 自动化测试是保障Web应用质量的关键技术,其核心原理是通过脚本模拟用户操作,对应用功能进行验证。在电商、SaaS等复杂Web应用场景中,自动化测试能显著提升回归测试效率,确保核心业务流程的稳定性。Selenium作为经典的Web自动化测试框架,凭借其成熟的生态、跨浏览器兼容性以及对动态Web技术的良好支持,成为构建企业级自动化测试体系的常见选择。本文以亚马逊这一页面结构复杂、动态加载频繁的典型电商平台为实战案例,深入探讨如何设计一个稳定、可维护的自动化测试框架。文章将重点解析分层架构(基础层、页面对象层、测 阅读详情

相关推荐

AI_千问使用第一次记录_功能测试用例与自动化测试用例Python+Selenium+pytest+POM+数据驱动

功能测试部分设计了30个测试用例,覆盖了复选框与单选框组合交互的各种场景 自动化测试部分采用Python+Selenium+pytest+POM+数据驱动框架,设计了页面对象模型和测试类结构

qq_29523911的博客 453

ArcGIS Desktop使用入门(二)常用工具条——数据驱动页面

本期开始介绍ArcGIS Desktop的常用工具条——数据驱动页面

qq_34582066的博客 1万+

UI自动化测试进阶:复杂用户流程的健壮设计与Playwright实战

UI自动化测试是软件质量保障的关键环节,其核心在于模拟真实用户行为,验证应用功能。其原理是通过脚本控制浏览器,执行点击、输入等操作,并验证页面响应。这项技术的核心价值在于提升测试效率、保障回归质量,并能持续验证复杂的端到端业务流程。在实际应用中,尤其对于涉及多步骤、多页面跳转及条件分支的电商购物、后台管理等复杂用户流程,传统的单点脚本往往脆弱难维护。本文聚焦于解决这一痛点,深入探讨如何基于页面对象模型(POM)和业务流程封装思想,构建具备状态感知与智能等待能力的自动化方案。通过引入用户视角建模、分层设计等工

weixin_28841265的博客 335

【干货+福利】数据驱动页面工具小技巧

福利在文末,嘘~【干货时间】嗨咯大家好,终于有机会为大家分享干货啦!也感谢各位小伙伴的耐心,即使在小编经久不更的情况下也依然默默地支持着我。今天为大家带来的干货是如何批量出图以及常见的一些...

qq_39167542的博客 2264

Win10如何使用BC3.1精简版

Win10如何使用BC3.1精简版 使用Borland C++3.1 学习μC/OS—Ⅱ几乎是现在的普遍做法,但是由于Win10系统不能直接使用BC3.1,所以需要用到DOSBox。 1、解压bc3.1精简版压缩包,本文将BC3.1文件夹复制在D盘下,DOSBOX按照默认路径安装。下图为两者安装目录图示: 2、修改DOSBOX的配置文件,找到DOSBox文件安装路径,记事本方式打开DOSBox 0.74-3 Options.bat文件,在此文件末尾添加: MOUNT C D:\BC//意为把D:\BC目录

qq_45547236的博客 2378

IEC61850 通信协议测试验证实战指南:从理论到实践

本文提供了一份全面的IEC61850通信协议测试验证实战指南,强调测试必须从理论走向工程实践。文章详细讲解了如何搭建测试环境,并深入剖析了MMS、GOOSE、SV三大核心协议的实战测试方法,旨在帮助工程师通过系统化的测试验证,确保电力自动化设备的互操作性与通信可靠性。

weixin_29204121的博客 171

ArcGIS教程:启用数据驱动页面

使用“数据驱动页面”,通过采用单一布局和遍历一组地图范围即可生成一组输出页面。范围由图层中的要素定义,有时称为切片、部分或感兴趣区域 (AOI)。定义范围的图层称为索引图层。任何要素图层均可用作索引图层。您可以使用设置数据驱动页面 对话框创建并自定义新的“数据驱动页面”。此对话框包含两个选项卡:定义和范围。您可从数据驱动页面 工具条或页面和打印设置 对话框中激活此对话框。

1万+

2026年瑞芯微数字IC设计笔试试卷带答案

本文主要考察数字集成电路设计相关知识,包括低功耗设计、时序分析、跨时钟域处理、总线协议等内容。试题分为单选题、多选题、代码设计题和简答题四部分。 单选题涉及门控时钟降低动态功耗、静态时序分析的限制、跨时钟域同步方案、时序违例修复方法、AHB总线信号、异步FIFO设计、半导体工艺电阻特性、二进制数转换、同步/异步复位比较以及分频电路设计等知识点。 多选题重点考查动态功耗优化技术、亚稳态特性、异步FIFO设计规范、Verilog可综合代码编写要求以及AXI总线协议特点等。 代码设计题要求实现一个同步FIFO和3

Open 217

基于数据驱动的方法和基于模型驱动的方法有什么区别?

基于数据驱动的方法侧重于利用大量数据来提取模式、洞察和预测。这种方法通常不依赖于预先定义的模型或假设,而是让数据自己“讲述故事”。

weixin_44943389的博客 1万+

linux内核学习(八)---摄像头框架移植(上)

本章来开始进行摄像头的移植,同时回顾一下V4L2的整个框架

文艺小少年的博客 113

低功耗 AI 人体存在检测系统:智能照明与安防的高效解决方案

低功耗 AI 人体存在检测系统通过 “ESP32-C3 主控 + HX7110 AI 模块” 的硬件组合,搭配双重检测算法与深度睡眠机制,既解决了传统检测方案的误报问题,又满足了长时间低功耗运行需求。系统接线简单、代码可直接移植,可快速集成到智能照明、安防监控等物联网设备中,具备广泛的应用前景。

weixin_42300449的博客 226

vue切换路由页面数据缓存_基于数据驱动的前端系统(spa)页面路由设计

本文涉及的技术包括:react、react-router(4.0及其以上)、femo(数据管理库)。这些技术都能找到对应的替代。前言在大型前端系统里面,业务场景复杂,系统复杂度高,开发人员协同难度大。这样的系统里面需要做许多设计来降低系统的复杂度,提高开发效率,适应多变的使用场景。其中路由设计是核心之一。什么是大型前端系统?笔者认为(比较主观)直观地以代码量和团队规模来衡量:代码量超过5万,前端人...

weixin_39833469的博客 356

【BIM入门实战】Revit创建地形的几种方法及优缺点

Revit在体量和场地选项卡的【地形表面】工具可以创建三维地形,有三种方法:放置点、指定点文件和导入实例文件、倾斜摄影点云技术和InfraWorks地形生成。 文章目录1. 放置点2. 指定点文件3. 导入实例文件4. 倾斜摄影点云技术5. InfraWorks地形生成 1. 放置点 放置点功能位于体量和场地选项卡下地形表面,点开找到放置点,并通过自定义设置点的高程值来创建地形的高程数据。 优点:通过用户自定义高程点来绘制模型,使地形更为精确。 缺点:只适用于面积小的项目,面积太大,人工效率低下。 .

智慧空间实验室 4762

用 UITableView 架构复杂页面:从数据驱动到 Diffable DataSource 的工程实践

在 iOS 开发中,页面搭建往往因为模块耦合、状态繁多而变得难以维护。理解 UITableView 的本质价值,在于将界面抽象为“分区 + 行”的二维结构,用成熟的数据源机制驱动视图展示,再借助 cell 复用、自动布局和自撑高能力,把原本杂乱的布局代码收敛为清晰的数据映射。这种数据驱动思想不仅简化了首页、设置页、订单列表等常见复杂页面,还通过 Diffable DataSource 实现了安全高效的增量刷新。对于移动开发者而言,掌握列表架构设计意味着更低的维护成本与更佳的性能表现。从基础复用原理到复杂状态

weixin_30522983的博客 272

用 SAP Fiori Launchpad Content Manager 做目录传输:把 Catalog 变更稳稳送到目标系统

摘要:SAP Fiori项目中,目录传输是确保应用一致交付的关键环节。开发团队常遇到目录在不同系统/客户端间不一致的问题,核心在于理解Launchpad内容管理的两种作用域:系统级(/UI2/FLPCM_CONF)使用workbench请求跨系统传输,客户端级(/UI2/FLPCM_CUST)通过customizing请求按SCC4设置传输。混淆作用域会导致目录分叉,如系统级目录被客户端本地修改后形成独立副本。官方推荐使用Content Manager而非过时的Launchpad Designer,并强调手

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 105

深度学习在移动开发中的应用:实时姿态估计实战

我们将使用TensorFlow Lite框架,结合专为移动端优化的MoveNet模型,实现一个能够在主流Android设备上达到30FPS的多人姿态跟踪解决方案,并深入探讨其优化技巧和实际应用场景。特别是3D姿态估计、多人长期跟踪等前沿技术的发展,将进一步推动移动端姿态估计技术的应用深度和广度。在下一篇文章中,我们将探讨深度学习在移动端的另一个创新应用:实时手势识别,包括如何在资源受限的环境中实现复杂手势的实时识别,以及这项技术在AR/VR交互、智能家居控制等场景中的应用。第四部分:典型应用场景实现。

Programming Talk 325

HarmonyOS ArkTS 坐标系统与数据驱动布局:从星座星图页面看 Stack 定位与 Grid 网格的实战应用

本文介绍了一个星座运势应用中星图页面的实现过程,重点探讨了如何精确绘制星座星图。作者通过三层嵌套布局(标题、星图详情、星座网格)构建页面,其中星图详情部分使用Stack组件实现层叠效果,并通过.position()方法精确定位每个星点坐标。文章对比了Grid与Flex布局的适用场景,展示了选中状态的视觉反馈设计,以及点击切换的交互逻辑。最终实现了一个包含12星座、每个星座6-8颗精确定位星点的可视化星图效果。

2501_93573294的博客 268

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

iOS实际开发中使用数据驱动页面布局

通过这个典型的“Me”页案例,我们分别使用硬编码和数据驱动布局来实现页面构建。通过对比可以发现,在实际开发过程中,使用数据驱动页面布局的方式更加灵活且更容易扩展。每一个小元素都拥有完整的功能,在添加或删除时,我们只需要对数据略微进行修改,而不需要大幅度修改约束代码或添加大量的条件判断。这不仅提高了开发效率,也增强了代码的可维护性。

weixin_39339407的博客 2460

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【数据驱动】复杂网络数据驱动控制Matlab代码

复杂网络广泛存在于自然界和人类社会,例如电力网络、交通网络、生物网络以及社交网络等。这些网络通常由大量节点和连接它们的边构成,其拓扑结构复杂多变,动力学行为难以预测。有效控制复杂网络以实现期望的全局行为,一直是控制理论领域一个极具挑战性的课题。传统的模型驱动控制方法需要精确的网络模型,这在面对复杂网络时往往难以实现,因为获取精确的网络模型通常成本高昂,甚至不可行。因此,近年来,数据驱动控制方法作为一种新的范式,受到了越来越多的关注,为复杂网络控制提供了新的途径。

m0_57702748的博客 918

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【数据驱动】复杂网络的数据驱动控制附Matlab代码

在数字化时代,复杂网络广泛存在于社会、经济、生物、信息等众多领域,如互联网、社交网络、电力网络、生物神经网络等。这些网络结构复杂、节点众多,节点间相互作用关系也呈现出非线性、动态变化的特点。传统基于模型的控制方法在处理复杂网络时,由于难以精确构建网络模型,往往面临较大的挑战。而随着传感器技术、大数据技术的飞速发展,海量与复杂网络运行状态相关的数据得以被收集。数据驱动控制方法能够直接利用这些数据挖掘网络运行规律,为复杂网络的有效控制提供了新的途径,成为当前学术界和工业界研究的热点。

Matlab_jiqi的博客 985
上一篇: React后台管理前端系统(基于开源框架开发)起步式
下一篇: [编程题] 翻转数列--附详细分析思路
拿我格子衫来
拿我格子衫来 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄10年 6万+粉丝 858原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拿我格子衫来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值