vue ant 菜单递归

解决Ant Design Vue树形选择器中的常见问题:递归渲染、回显与菜单控制 本文深入解析了Ant Design Vue树形选择器(a-tree-select)在复杂业务场景下的核心应用难题,重点提供了递归渲染、数据回显与精细化菜单控制的实战解决方案。文章通过具体代码示例,详细阐述了如何构建健壮的递归转换函数、确保选中项在各种操作后正确显示,以及如何根据业务规则动态控制节点的可选性,帮助开发者高效解决实际开发中的常见痛点。 阅读详情

递归需要两个组件(正常是需要三个组件,但是vue组件可以自己调用自己)

我自己的数据结构

{ "code": 200, "message": "操作成功", "result": { "loginAuthDto": { "userId": "1", "loginName": "admin", "userName": "超级管理员", "groupId": null, "groupName": null }, "menuList": [ { "id": "11", "pid": "1", "menuCode": "uas", "menuName": "用户中心", "url": "/uas", "icon": "fa fa-bicycle", "number": null, "remark": "", "yn": null, "parentMenu": null, "subMenu": [ { "id": "111", "pid": "11", "menuCode": "xtsz", "menuName": "系统管理", "url": "/yxgl", "icon": "fa fa-desktop", "number": null, "remark": "", "yn": null, "parentMenu": null, "subMenu": [ { "id": "1111", "pid": "111", "menuCode": "uas_role", "menuName": "角色管理", "url": "/uas/role/list", "icon": "fa fa-hand-o-up", "number": null, "remark": "", "yn": null, "parentMenu": null, "subMenu": null, "hasMenu": false }, { "id": "1112", "pid": "111", "menuCode": "uas_user", "menuName": "用户管理", "url": "/uas/user/list", "icon": "fa fa-user", "number": null, "remark": "", "yn": null, "parentMenu": null, "subMenu": null, "hasMenu": false }, { "id": "1113", "pid": "111", "menuCode": "uas_menu", "menuName": "菜单管理", "url": "/uas/menu/list", "icon": "fa fa-paperclip", "number": null, "remark": "", "yn": null, "parentMenu": null, "subMenu": null, "hasMenu": false }, { "id": "1114", "pid": "111", "menuCode": "uas_action", "menuName": "权限管理", "url": "/uas/action/list", "icon": "fa fa-firefox", "number": null, "remark": "", "yn": null, "parentMenu": null, "subMenu": null, "hasMenu": false }, { "id": "1115", "pid": "111", "menuCode": "uas_group", "menuName": "组织管理", "url": "/uas/group/list", "icon": "fa fa-group", "number": null, "remark": "", "yn": null, "parentMenu": null, "subMenu": null, "hasMenu": false } ], "hasMenu": true } ], "hasMenu": true } ] } }
leftNav.vue

<template>
<a-menu @click="changNav" theme="light"
                :selectedKeys="selectedKeys"
                mode="inline" :defaultSelectedKeys="['1']"
                style="calc(height:100% - 64px;)">

            <a-sub-menu :key="key" v-for="(item, key) in menuList">
                <span slot="title"><a-icon :type="item.icon" /><span>{{item.menuName}}</span></span>

                <template v-for="(subMenuItem, subMenuKey) in item.subMenu">

                    <!--子导航栏-->
                    <template v-if="subMenuItem.subMenu">
                        <SubMenu :subMenuArr="subMenuItem" :key="subMenuKey" ></SubMenu>
                    </template>

                    <template v-else>
                        <!--导航栏-->
                        <a-menu-item :key="subMenuItem.url">{{subMenuItem.menuName}}</a-menu-item>
                    </template>

                </template>

            </a-sub-menu>
        </a-menu>
</template>
<script>
    import SubMenu from "./SubMenu";
    export default {
        components: {SubMenu},
        data() {
            return {
                collapsed: false,
                selectedKeys: '',
                menuList: []
            };
        },
        methods:{
            __requset() {
             // 网络请求获取菜单
            },
            changNav(item) {
                console.log(item.key)
                this.$router.push({path: item.key})
                this.selectedKeys = item.key
            },
            updateMenu () {
                const routes = this.$route.matched.concat()
                this.selectedKeys = [ routes.pop().path ]
            }
        },
        mounted() {

        },
        created() {
           this.__requset()

        }
    }
</script>
SubMenu.vue

<!--vue中的函数式组件也称为无状态组件,与Flutter中的无状态组件类似,其内部没有任何状态。函数式组件中只接受一个props参数,没有其他参数。-->
<template functional>
    <a-sub-menu :key="props.subMenuArr.id" :title="props.subMenuArr.menuName">

        <template v-for="(subMenuItem, subMenuKey) in props.subMenuArr.subMenu">

            <template v-if="subMenuItem.subMenu">
                <!--  vue组件自己调用自己  -->
                <sub-Menu :key="subMenuKey" :subMenuArr="subMenuItem" ></sub-Menu>
            </template>

            <template v-else>
                <a-menu-item :key="subMenuItem.url">{{subMenuItem.menuName}}</a-menu-item>
            </template>


        </template>
    </a-sub-menu>
</template>

<script>
    export default {
        name: 'SubMenu',
        components: {},
        props: {
            subMenuArr: {},
        }
    }
</script>

<style scoped>

</style>

 

Ant Design Vue中a-tree-select树形选择器实战:递归数据处理与动态菜单控制 本文详细解析了在Ant Design Vue项目中,如何利用a-tree-select组件高效处理后台返回的递归树形数据,并实现动态菜单控制。核心内容包括通过递归函数加工数据、根据业务逻辑动态设置节点可选性(selectable属性),以及解决数据回显等关键问题,为开发者提供了一套完整的实战解决方案。 阅读详情

相关推荐

React + Ant Design 利用递归动态生成菜单栏

React + Ant Design 利用递归动态生成菜单栏 自定义菜单配置文件 // menu-list.js // 引入菜单向需要的图标 import { HomeOutlined, AppstoreOutlined, UserOutlined, SettingOutlined, BarChartOutlined, LineChartOutlined, Unorde...

锋利的二丫 6094

vue 后台管理系统如何生成动态菜单

说起菜单的如何生成的,这个会与路由和权限的定义有关。因为路由涉及页面的跳转以及当前菜单项高亮选中等,可能后面还会涉及面包屑、标签页等功能的制作。目前不考虑权限,我们根据约定路由的配置,来生成动态菜单。 一、布局 对于后台管理系统,通常由 sider 菜单栏、header、footer 和 content 的内容组成。 <a-layout> <a-layout-sider>Sider</a-layout-sider> <a-layout> .

qq_36437172的博客 3209

Vue.js项目中Ant Design Vue菜单组件递归实战

本文还有配套的精品资源,点击获取 简介:在使用Vue.js框架开发Web应用时,经常需要处理具有复杂层级结构的菜单数据。Ant Design Vue作为一套流行的UI组件库,提供了简洁的界面和设计模式。本文详细介绍了如何实现Ant Design Vue中的 <a-menu> 组件来递归渲染后台返回的无限层级菜单数据,并结合Vue Router和权限...

weixin_34268462的博客 1918

VUE动态路由

常规的路由前端控制,路由地址是静态的,后端通过匹配前端路由来派发权限; 而有时根据需求路由需要后端控制,前端不设置默认的静态路由,后端根据权限下发整个路由表,前端根据取到的内容生成路由。 静态路由存在于一个数组中,以下为一个典型的静态路由: routes: [ { path: '/', redirect: '/menu1' }, { ...

juliotang的博客 2328

vue_ant-design-vue菜单递归

后台返回菜单无限层级展示

2.1 量子精密测量:SERF原子陀螺仪中的核自旋-电子自旋强耦合机制

本文深入解析了SERF原子陀螺仪中核自旋-电子自旋强耦合机制的核心原理与应用。通过量子精密测量技术,SERF陀螺仪实现了超高精度的惯性导航,其独特的磁场自补偿和拉莫尔进动特性使其在弱磁场环境下表现出色。文章还探讨了关键技术突破和前沿进展,展示了量子精密测量在惯性导航领域的巨大潜力。

kotlin6android的博客 210

Vue实现一个页面缓存、左滑返回的navigator

前言本文将介绍如何在不使用vue-router提供的router-view的情况下,实现一个渲染路由对应组件的navigator控件,并逐步增加主副舞台区分、页面缓存、页面切换动画、左滑返回支持等功能。 本组件的源码位于我的github: github.com/lqt0223/nav… 本组件的demo: navigator-demo.herokuapp.com/#/view1 (建议在移动设备上...

weixin_34054931的博客 978

Linux下自动化解析q7签名文件的有效期与时间戳

本文详细介绍了在Linux环境下自动化解析q7签名文件有效期与时间戳的方法。通过编写高效脚本,开发者可以批量提取签名时间信息,验证签名有效性,并集成到CI/CD流程中。文章提供了完整的脚本实现,包括错误处理、批量处理功能,并解决了常见环境问题,特别适用于国产操作系统如UOS的开发场景。

weixin_30872499的博客 519

vue-router 利用 $route 的 matched 属性实现面包屑效果

我们以一个固定的路由表来说明 let routes = [ { path: '/', component: () => import('../pages/layout/Layout.vue'), children: [ { name: 'pageA', path: 'a', component: PageA, children: [ { name: '..

天空之上有座城 2万+

[QMT量化交易小白入门]-七十三、主力资金动向:板块与个股资金流数据API(量化python代码解析)

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1115

Mamba SSM 实战:IMDb 文本分类 + Mamba-ssm 全流程

Mamba SSM 文本分类链路:IMDb 二分类 → MambaLMHeadModel (d_model=256, n_layer=8, d_state=16, exp2=2) → 末 token 分类头。5 epoch 达 89.2% 准确率 (与 BERT-base 持平), 但显存降低 44% (3.5GB vs 6.2GB)。建议序列长度 ≥ 1024 再选 Mamba, 短序列 (< 512) 用 BERT 更高效。扩展时注意d_state。

m0_71589036的博客 57

vue-ant-admin后台管理系统

一、前言 前面我们使用了vue+element UI做的类似于人人开源的后台管理系统,朋友推荐了一款vue+AntDesign版本的后台管理系统模板,这个可以实现服务于企业级别的后台系统。各项功能和界面的给人一种全新的感觉。下面我们一起来学习一哈! 二、介绍vue-ant 效果: 文档地址:https://www.antdv.com/docs/vue/introduce-cn/ 源码地址:https://github.com/vueComponent/ant-design-vue/ 组件类型

前端-尔嵘 1万+

Harness Engineering:让Coding Agent真正落地生产

本文将带你系统性地了解如何让Coding Agent真正落地生产,核心是依托(全球领先的持续交付、云成本管理、 feature flagging、安全治理一体化平台),结合企业级AIDD(AI-Driven Development)的工程化实践,构建一套可信赖、可观测、可扩展、可治理的Coding Agent落地体系。核心概念与理论基础:什么是Coding Agent?它和普通的AI代码补全工具(比如GitHub Copilot)有什么区别?什么是Harness Engineering?

移动开发前沿的博客 455

ant-design-vue 递归菜单+只打开一个菜单

效果图 左侧菜单代码 <template> <div> <a-menu mode="inline" theme="dark" :open-keys="this.$store.state.menu.leftMenusOpenKey" :selectedKeys="this.$store.state.menu.leftMenusSelectKey" :style="{ height: '100%',.

℡メ㏑╭ァ小凯 2730

Vue3 - 完美解决html2canvas截图不全问题,截图只截取当前可视区域导出图片不全,截屏导出的图片显示不全只有一部分或缺一块,vue3移动端H5网页项目使用html2canvas插件长截图!

vue3,html2canvas,移动端H5网页,截图不全,html2canvas长截图不全,保存长截图,页面滚动导致截图不全,网页下方截屏不到怎么办,底部一部分无法截屏到,保存的图片少了一大块,H5海报截图不完整,怎么截取滚动条下方的内容,截图图时图片不全,截图图片只有一半的问题,底部内容空白,截图空白问题的解决,截图不全怎么办,html2canvas.js网页截图功能(解决截图不全问题,移动端ios系统截图不完整,html2canvas截图太长又不能删减截取不到,使用HTML2Canvas在H5页面上实

🏆 前端领域优质创作者 1万+

ICC2:使用analyze_lib_cell_placement检查lib cell的pass rate

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?在place之前需要使analyze_lib_cell_placement命令去检查lib cell在当前的site row/power plan/legalize设置的环境下能够正常place和legalize。下面分享一个脚本去报告pass rate低于2%的lib cell。

m0_61544122的博客 674

使用 Ant-design-vue 1.x 单文件递归生成菜单

以前使用 Ant-design-vue 的单文件方式递归生成菜单时,会发现遍历出来的菜单并不是自己与想的那样,而是渲染不出来。 官方的解释是:Before v2.0, 因组件内部会动态更改a-sub-menu的属性,如果拆分成单文件,无法将属性挂载到a-sub-menu上,你需要自行声明属性并挂载。为了方便,避免属性的声明,我们推荐使用函数式组件。 并且给出了一个demo,但会发现也显示不正常,那就自己来实现吧,直接根据路由配置来遍历生成。 1、路由配置如下: [ { path: '/',

qq_39075021的博客 2018

一台NAS两个系统:飞牛nas上完美运行群晖DSM?(飞牛nas+群晖nas套娃安装实操)

想在飞牛NAS上体验群晖DSM系统?💡 本文详细记录了飞牛nas上部署群晖的完整过程,从镜像转换到系统安装,每一步都有详细说明 🖥️,让你在不增加硬件成本的情况下,轻松实现一套硬件、多种系统的灵活部署 ✅

XiaoqiangClub的博客 2370

【Ant Design Vue 】之Menu菜单

文章目录常用属性常用事件递归嵌套多级菜单效果 版本ant-design-vue: "^1.7.4", 常用属性 属性 说明 默认值 mode 菜单类型,现在支持垂直、水平、和内嵌模式三种 vertical inlineCollapsed inline 时菜单是否收起状态 theme 主题颜色(light/dark) light openKeys(.sync) 当前展开的 SubMenu 菜单项 key 数组 defaultOpenKeys 初始展开的 SubMenu

张营的技术博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ant-design-vue menu菜单递归

如果报编译错误,可以试试在vue.config.js中加上。

前端~锋小张 1150

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

antdesignVue递归导航菜单

文件leftNav.vue。

Renners的博客 1299

jre9下载 jdk9

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

vue3 + ant-design-vue@3.x 根据路由生成 多级递归嵌套菜单

首先全局注册图标 import { createApp } from "vue"; import { createFromIconfontCN } from "@ant-design/icons-vue"; // 注册远程 icon const Icon = createFromIconfontCN({ // 这个是我自己的图标库,你自己创建要去 iconfont.cn 上创建,看官网教程 https://next.antdv.com/components/icon-cn#%E8%87%AA%E5%AE

言小溪 的博客 4717

ant-design of vue中menu组件渲染报错

can't read property isRootMenu of undefined 单文件递归菜单官网介绍 使用单文件方式递归生成菜单。 Before v2.0, 因组件内部会动态更改a-sub-menu的属性,如果拆分成单文件,无法将属性挂载到a-sub-menu上,你需要自行声明属性并挂载。为了方便,避免属性的声明,我们推荐使用函数式组件。 才知道什么叫函数式组件Vue.js介绍…… demo: 父组件: <template> <a-menu :default-sel

weixin_45803990的博客 1937

【组件篇】在vue3+ts项目中基于antd封装一个通用的左侧菜单栏组件

通用的左侧菜单sideBar组件

Hei, Welcome To vickie's Blog,Good Good Study, Day Day Up ~ 3181

vue+java 实现树形菜单

文章目录前言一、数据库设计二、整体思路前端页面加载时就进行,物料菜单查询。后台请求getInventoryClassList方法getNextLevel方法数据返回格式前端展示总结 前言 小白一枚. 目前项目有个实现物料档案查询的功能,其中树形菜单没做过。研究了一上午,使用ant-vue加java实现。 与大家分享一下。 一、数据库设计 必要字段: id: 主键 pid: 父id title: 名称 level:级别,1为跟级别 二、整体思路 前端页面加载时就进行,物料菜单查询。 具体方法 后台请求

ITxiaofeixiang的博客 844
上一篇: ant 此时不应有 C:\Program。
下一篇: flutter仿商品列表二(滚动学习)
An_s
博客等级 码龄10年 665粉丝 363原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

An_s

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

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

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

打赏作者

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

抵扣说明:

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

余额充值