vue层级关系的数据管理

项目背景:为一些有层级关系的数据管理做一套后台管理系统,例如一个小区,里面是有许多楼,楼里有许多层,每一层有许多不同的房······,现在就是要实现对这些数据进行增删改查操作。
1.Tree(树形组件)

Sublime Text 3左侧的项目目录,就是有一定层级关系的“数据”被组织成Tree,然后单击各子树,会呈现不一样的内容,因此可借用这个设计思想来设计这一套系统的导航功能。为什么要做这个导航功能,因为若要简单实现,直接用一个选择器组件,放入所有可选项让用户进行选择即可,然而这样做的友好度不够。

例如,一哥们想进入小区内的A楼,13层找到1304房,而选择器实现无非2种方式:

第一种,级联选择器,我利用E UI里的级联选择器组件,未找到很好的动态追加选项的方法。

第二种,选择器备选项进行分组显示,这样首先是导致备选项数量冗长;其次需要一次性加载所有的数据,通常很多数据是用不上的,因此浪费服务器资源。

我的方式是,利用 Tree树形组件进行懒加载,未利用的数据不加载,单击箭头图标进行加载,单击树节点名称进行内容导航。以下是部分代码展示:

handleNodeClick(obj,node,data) {

            if (node.level === 1) {                

              this.$router.push('/ldTable');

            }else if (node.level === 2) {

              this.$router.push('/lcTable/'+node.data.lcId+'/'+node.data.name);

            }else if (node.level === 3) {

            }else if (node.level === 4) {

            }else if (node.level === 5) {

            }

        }

懒加载部分:

loadNode(node, resolve) {  

            if (node.level === 0) {  //level是树的层级
                return resolve([{ name: '列表' }]); //初始树节点
            }
            if (node.level === 1) { //层级为1的数据,层级2 3 4 5类同

                this.$axios.get('http:// ?', {
                    params: {
                        pageNo: 1
                    }
                })
                .then(function (response) {

            //拼装数据,[object] 

            let params=[]
            for(let i=0;i<response.data.data.length;i++){

                let param={leaf:false,name:'',ldId:''}
                param.leaf=false;
                param.name=response.data.data[i].ldName;
                param.ldId=response.data.data[i].id; //存储楼的id
                params.push(param);

            }

            return resolve(params);
                })
                .catch(function (error) {
                    console.log(error);
                });

            }
}

2.router

在Demo里,已经有两层路由的嵌套,而我们现在要利用树导航,则需要第三层路由嵌套,需要弄清以下问题:

① 上一层路由是什么,也就是第二层路由是什么,设置好router配置文件的Children

② 相应的也要嵌套,第一层在App.vue,第二层在外部导航菜单Home.vue里,第三层必须在显示树节点的文件里,因为要求同一页面上内容,左侧导航右侧显示,所以第三层路由显示内容的位置是在Home.vue的router-view显示内容里的router-view

其他,例如考虑到兼容问题,用 mode:‘hash‘ ,设置参数用以传递id和层级传递信息(注意:非层际)

<template>
    <div class="wrapper">
        <v-head></v-head>  <!--应注意到,这里的v-head是import进来并且注册可用的组件-->
        <v-sidebar></v-sidebar>
        <div class="content-box" :class="{'content-collapse':collapse}">
           <!--  <v-tags></v-tags> -->  <!-- 实现标签效果,这里由于业务逻辑不适用,所以不用 -->
            <div class="content">
                <transition name="move" mode="out-in">
                    <keep-alive>
                        <router-view></router-view>
                    </keep-alive>
                </transition>
            </div>
        </div>
    </div>
</template>

存在的问题:当我们已显示第三层内容时,单击左侧导航菜单(第二层),会无法切换,必须先点击树的任意节点,再点击导航菜单才可正常切换。
3.关于table的格式化显示

例如,我想当变量flag为1时,显示在家,为0时,显示离家。则需要用到格式化显示,具体实现如下:

 <el-table-column prop="flag" :formatter="formatter1"label="状态"  sortable width="150"></el-table-column>
formatter1(row, column) {

              if(row.flag==='1'){  //身份

                return '房主'

              }else{

                return '房客'

              }

       }

本文学习自:https://www.cnblogs.com/ww01/p/9060212.html

原文地址:https://www.cnblogs.com/smart-girl/p/10633894.html

时间: 2024-08-01 22:04:18

vue层级关系的数据管理的相关文章

Web中树形数据(层级关系数据)的实现—以行政区树为例

在Web开发中常常遇到树形数据的操作,如菜单.组织机构.行政区(省.市.县)等具有层级关系的数据. 以下以行政区为例说明树形数据(层级关系数据)的存储以及实现,效果如图所看到的. 1 数据库表结构设计 树形数据一般通过父节点和子节点实现数据之间的层级关联,层级关系在数据库中主要通过主键和外键来实现. --使用Oracle数据库 --创建行政区表 create table TB_XZQ ( code NUMBER not null, --行政区编码,主键 parent_code NUMBER, -

Shell:进程的层级关系

[[email protected] ~]$ ps -ef | grep initroot 1 0 0 Apr24 ? 00:08:25 init [3] [[email protected] ~]$ ps -ef | head -n 1UID PID PPID C STIME TTY TIME CMD 第二三列分别是当前进程ID,父进程ID P1:0号进程fork出1号root权限的init进程,1号(注:0号进程是系统启动的第一个进程,它是所有其它进程的祖先,进程成为孤儿进程后会被0号进程接

XIB添加文件的层级关系

LZ的问题是,原来的tableViewList是在ScrollViewAD上的导致,tableView下拉时会被最新加入的scrollView挡住,是因为层级关系,如果将ScrollView作为第一个子视图,则不会影响tableView的下拉效果.

Unity NGUI和UGUI与模型、特效的层级关系

目录 1.介绍两大UI插件NGUI和UGUI 2.unity渲染顺序控制方式 3.NGUI的控制 4.UGUI的控制 5.模型深度的控制 6.粒子特效深度控制 7.NGUI与模型和粒子特效穿插层级管理 8.UGUI与模型和粒子特效穿插层级管理 写在前面 这篇笔记是整理了之前做的记录,在做项目的过程中,遇到了各种各样的界面穿插问题,界面层级混乱,比如,手机卡了或点快了,就导致两个界面相互交叉.对于界面,这应该算是一个很严重的bug,很大部分原因是整个UI框架没有从整体上考虑这个,后来决心弄清楚层级

树状结构Java模型、层级关系Java模型、上下级关系Java模型与html页面展示

树状结构Java模型.层级关系Java模型.上下级关系Java模型与html页面展示 一.业务原型:公司的组织结构.传销关系网 二.数据库模型 很简单,创建 id 与 pid 关系即可.(pid:parent_id) 三.Java模型 (我们把这张网撒在html的一张表里.其实用ul来展示会简单N多,自己思考为什么LZ会选择放在表里) private class Table {        private Long id; // 当前对象的id         private int x; /

初级篇第十期:学习查看View的层级关系

学习建议:自己动手,丰衣足食 学习周期:1周 学习目的:熟练使用Debug View Hierarchy查看View的层级关系 学习答疑:欢迎来技术群里提问并做分享 学习工具:Xcode开发环境,iOS8+ 学习内容:熟悉Xcode自带视图管理工具 这个功能很强大,早起只有收费软件Reveal可以来很好的调节iOS上UI界面的问题,那么在iOS8出来以后呢,Xcode6又更新出来一个功能,算是自带工具吧,与Reveal是类似的,不管你用IB还是纯代码,都是可以通过这个工具来查看当前程序运行界面中

6. 处理层级关系

在实际的测试脚本中,有可能需要获取其层级关系,以及获得当前的层级.一般来说当前层级都不会是链接,而父层级则基本是以链 接.找到所在的div或ul,然后再通过该div或ul找到下面的所有链接,这些链接就是父层级.最后不是链接的 部分就应该是当前层级了. HTML: <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> &l

Css中Position定位属性与层级关系

今天同事发现一个有意思的问题,关于position的层级关系的,他要不说我也没注意过 测试后果然有趣,有待深入研究: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Css中Position定位属性与层级关系</title> 6 <style type="text/css"> 7 #W{ 8

UITableView和UITableViewCell在不同iOS版本的层级关系

这是我人生中的第一篇博客,兴奋,激动,哈哈!!! UITableView时iOS中非常常用的一个控件,一般情况下那几个必须实现的代理方法就够我们实现一些简单的界面了.但有时候猛然遇到一个关于tableview的问题,也会令像我这种的小白不知所措. - (NSIndexPath *)GetIndexPath:(id)sender {  UIButton        *btn = ((UIButton *)sender); UITableViewCell *cell = (UITableViewC