列表封装-递归数据回显-全局数据挂载——基础积累

这篇具有很好参考价值的文章主要介绍了列表封装-递归数据回显-全局数据挂载——基础积累。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

全局挂载数据

某些下拉选项或者配置项是固定的,将这些数据提取到一个单独的js文件,对应页面使用只需要引入即可,这是数据共享的一种,此外还可以将数据挂载到vue.prototype中,配置原型名,完成后对应页面不用引入js文件,只需要全局使用配置名即可获取数据。

// main.js
import {getDictObj} from "@/utils/dictObj.js"
Vue.prototype.$dict = getDictObj() // 全局挂载
<!-- 页面使用:  $dicy.名称  -->   
<el-select 
   v-model="item.fvRoomNature"
   placeholder="请选择" 
   @change="selectChangeHundle">
     <el-option v-for="item in $dict.fvRoomNaturetypelist" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>

列表封装or表单封装

element的列表如果把原有的结构写上去,通常会涉及非常多的字段,如下:

 <el-table
      :data="tableData"
      style="width: 100%">
      <el-table-column prop="date"
        label="日期"
        width="180">
      </el-table-column>
      <el-table-column
        prop="name"
        label="姓名"
        width="180">
      </el-table-column>
      <el-table-column
        prop="address"
        label="地址">
      </el-table-column>
     <!-- 更多列表.... -->
    </el-table>

这种列表信息可以通过遍历处理,例如我们给出对应字段

let table = [
   // ... 对应字段
]

利用对应字段在el-table上遍历节点,我们只需要修改数组信息即可实现动态的表单展示。

列表和表单的权限管理

此外我们还可以利用后台返回的权限列表数据进行判断比对,遍历出新的数据将新数据渲染到页面上

Object.entries(el.data).forEach(item=>{
		showArr.forEach(res=>{
		if(res.fvEnName == item[0]){
			res.fvEnName = item[1]  
		    // this.$set(res,'K',item[0])
		}
		if(res.fvDemc == item[0]){
			res.fvDemc = item[1]
			// this.$set(res,'K2',item[0])
		}
		})
	})
})

element tree的父级name拼接:A-AA-AAA

<el-tree :data="treedata" node-key="id" @node-click="treeChange" :props="defaultProps" lazy :load="treeLoad" >
      <span slot-scope="{ node, data }">
        <i :class="data.icon"></i>
        <span style="padding-left: 4px;">{{node.label}}</span>
      </span>
</el-tree>

var res = [
    {code: 1,
    name: "湖北省",
    children: [{
        code: 1,
        name: "武汉市",
        children: [
            {code: 1,
             name: "洪山区",
              children: [{
                           code: 1,
                           name: "光谷广场"
                        }]
             }, 
            {code: 1,
             name: "青山区",
             children: [{
                           code: 1,
                           name: "青山大街"
                        }]
      }]
}]

点击光谷广场节点,父级name拼接:武汉市-洪山区-光谷广场,利用递归实现拼接。

treeChange(e, no) {
    // e:当前点击节点 ,no当前点击节点以及父级节点信息。
    let str = this.getLabel(no);
    // str - e.name : 湖北省-武汉市-洪山区-光谷广场,这里利用数组join('-')即可实现
    this.$emit("ObjHandle", e,str) 
},
    
// 获取父级节点名称
getLabel(data){
    let arr = [];
    inits(data);
    function inits(params){
       // 当前节点的父级的父级为null说明到了一级节点,直接终止递归。
      if(!params.parent.parent) {
           return;
      };
      // 如果不是则向数组的首位添加,因为树形节点是由内向外的遍历
      arr.unshift(params.parent.data.name)
      inits(params.parent); // 将当前最新的节点传入,递归遍历。
    }
    return arr.join('-');  // 返回最终的结果:湖北省-武汉市-洪山区
}

element tree组件连接线以及懒加载 (👈点击直达)
再也不用担心组件跨层级的数据共享和方法驱动了 (👈点击直达)
前端换肤,聊一聊主题切换那些事(👈点击直达)
echarts数据可视化-动态折线堆积图 (👈点击直达)
vue3使用百度地图(👈点击直达)

如果觉得这篇文章对你有帮助,欢迎点赞👍、收藏💖、转发✨哦~文章来源地址https://www.toymoban.com/news/detail-495996.html

到了这里,关于列表封装-递归数据回显-全局数据挂载——基础积累的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp - [全端兼容] 多选弹框选择器,弹框形式的列表多选选择器组件插件(底部弹框式列表多选功能,支持数据回显、动态数据、主题色等配置)

    网上的教程都太乱了,各种不兼容且 BUG 太多,注释也没有很难进行改造。 本文 实现了 uniapp 全端兼容的弹框多选选择器,从底部弹出列表项进行多选(可回显已选中和各种主题色、样式配置), 您可以直接复制代码,稍微改改样式就能用了。 如下图所示,数据列表(支持

    2024年02月12日
    浏览(120)
  • Vue2自己封装的基础组件库或基于Element-ui再次封装的基础组件库,如何发布到npm并使用(支持全局或按需引入使用),超详细

    以下我以 wocwin-admin-vue2 项目为例 修改目录结构,最终如下 1、导入组件,组件必须声明 name 2、定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册 3、导出的对象必须具有 install,才能被 Vue.use() 方法安装(全局使用) 4、按需引入 5、packa

    2024年02月08日
    浏览(79)
  • 从0到1开发go-tcp框架【1-搭建server、封装连接与业务绑定、实现基础Router、抽取全局配置文件】

    本期主要完成对Server的搭建、封装连接与业务绑定、实现基础Router(处理业务的部分)、抽取框架的全局配置文件 从配置文件中读取数据(服务器监听端口、监听IP等),通过自定义Router完成具体业务操作 第一版最终项目结构: 1.1 编写server端 编写iserver.go,用于定义server的

    2024年02月06日
    浏览(65)
  • 安卓开发多选列表和回显已选择内容

    安卓日常开发和学习过程中,经常会碰到需要多选列表和显示已选择内容的场景,本文将介绍安卓实现多选列表和回显已选择内容的一种方案。 话不多说,先上效果: 思路分析: 一个纵向列表显示待选择内容,一个横向列表用来显示已选择内容,点击待选列表和已选择列表

    2024年02月06日
    浏览(45)
  • uniapp中全局页面挂载组件(小程序)

    uniapp中页面全局挂载组件 首先我说的方法不是全局引入注册使用的时候把标签放在页面中 所需库 vue-inset-loader 步骤: 1.首先需要把uniapp项目 初始化 2.下载所需库 3.创建vue.config.js 文件 从HBuilder X创建的uniapp项目没有vue.config.js文件 所以需要建一个 这里面的配置我也是研究了好

    2023年04月09日
    浏览(43)
  • Vue3 全局实例上挂载属性方法

    导语 在大多数开发需求中,我们有时需要将某个数据,或者某个函数方法,挂载到,全局实例身上,以便于,在项目全局的任何位置都能够调用其方法,或读取其数据。 在Vue2 中,我们是在 main.js 中 直接将数据或者方法绑定在 Vue.prototype 身上,在页面中,可以直接通过 thi

    2024年02月02日
    浏览(28)
  • uniapp小程序,H5,Editor组件封装、使用及回显(vue3)

    官网链接:editor | uni-app官网 (dcloud.net.cn)

    2024年02月01日
    浏览(42)
  • uniapp中全局页面挂载组件(小程序,h5)

    1.uniapp 自带的 easycom 使用easycom的好处 1、简化组件的使用,提高开发效率 2、不论组件目录下安装了多少组件,easycom打包后会自动剔除没有使用的组件,对组件库的使用尤为友好。 说明 easycom方式引入的组件 无需在页面内import ,也 不需要在components内声明 ,即可在任意页面

    2024年02月05日
    浏览(44)
  • 【微信小程序】挂载网络请求到全局this对象

    《工欲善其事,必先利其器》 有一些常用的东西,如 http 请求、弹窗、错误处理等等,如果在每个页面都引用一遍,会增加不必的代码量,我们可以在 app.js 中对 Page 对象进行简单地封装,从而让 Page 的能力更强。 一、封装原生网络请求 request.js : 二、app.js 引入网络请求,

    2024年02月07日
    浏览(40)
  • uniapp自定义动态tabbar及全局挂载底部自定义组件

    本篇文章解决的问题如下: 1:uniapp在pages.json中定义的tabbar,在非tabbar页面的时候不会显示,所以自定义了一个tabbar组件。(注意是自定义组件不是官方的custom-tab-bar组件) 2:有些tabbar需要动态变化,会员登陆前和会员登陆后可能会需要在tabbar上面展示不同的项目,所以要做

    2024年02月02日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包