当前位置: 首页 > news >正文

西安苗木行业网站建设价格不受限制的搜索引擎

西安苗木行业网站建设价格,不受限制的搜索引擎,架设网站是自己架设服务器还是租服务器,网站建设销售工资多少对于element中提供给我们的el-menu组件最多可以实现三层嵌套,如果多一层数据只能自己通过变量去加一层,如果加了两层、三层这种往往是行不通的,所以只能进行封装 效果图 一、定义数据 MenuData.ts export default [{id: "1",name…

对于element中提供给我们的el-menu组件最多可以实现三层嵌套,如果多一层数据只能自己通过变量去加一层,如果加了两层、三层这种往往是行不通的,所以只能进行封装

效果图

 

 一、定义数据

MenuData.ts

export default [{id: "1",name: "第一级菜单",level: '1',child: [{id: "11",name: "第二级菜单",level: '1-1',child: [{id: "111",name: "第三级菜单",level: '1-1-1',child: [{id: "1111",name: "第四级菜单",level: '1-1-1-1',child: [{id: "11111",name: "第五级菜单",level: '1-1-1-1-1',child: []}]}]}]}]},{id: "2",name: "第一级同级菜单",level: '2',child: []}]

二、封装组件 

封装思想:

 1.对本身组件进行循环使用,如果有子集使用本身组件 把child数据传给自己

 2.如果没有子集 使用 el-menu-item

以下代码对setup( )函数和setup语法糖分别做了实现 

setup语法糖

<template><el-menu:default-active="defaultActive":unique-opened="true"class="el-menu-vertical-demo"><template v-for="item in menu"><!-- 如果有子集 --><template v-if="item.child && item.child.length > 0"><el-sub-menu:key="item.id":index="item.level":disabled="item.meta?.disabled":popper-append-to-body="false"><template #title><i :class="[item.meta?.icon]"></i><!-- 添加空格 表示下级--><span> {{ generateSpaces(item.level) }} </span><span slot="title"> {{ item.name }}</span></template><MenuTree:menu="item.child":defaultActive="defaultActive"@clickItem="clickItemHandle"/></el-sub-menu></template><!-- 如果没有子集 --><template v-else><el-menu-item:key="item.id":index="item.level":disabled="item.meta?.disabled":popper-append-to-body="false"@click="clickItemHandle(item)"><i :class="[item.meta?.icon]"></i><!-- 添加空格 表示下级--><span> {{ generateSpaces(item.level) }} </span><span slot="title">{{ item.name }}</span></el-menu-item></template></template></el-menu>
</template><script lang="ts" name="MenuTree" setup>
// 把下面代码变成setup语法糖的形式 
import type { PropType } from "vue";
import type { MenuItem } from "@/types/lesson";
// type 为了方便写成这样 可以根据自己项目设定typedefineProps({menu: {type: Array as unknown as PropType<any[]>,required: true,default: () => [],},defaultActive: {type: String as unknown as PropType<string>,required: true,default: [],},
});const emit = defineEmits(["update-active-path", "clickItem"]);// 返回的空格字符串 用于显示菜单层级 
const generateSpaces = (level: string) => {let str = "";level.split("")  .filter((it) => it != "-") .forEach(() => {str += " ";});return str;
};// 点击当前菜单项
const clickItemHandle = (item: MenuItem) => {emit("clickItem", item);
};
</script><style scoped lang="less">
.el-menu {width: 288px;
}
</style>

setup函数

<template><el-menu :default-active="defaultActive"  :unique-opened="true"   class="el-menu-vertical-demo"  ><template v-for="item in menu"><template v-if="item.child && item.child.length > 0"><el-sub-menu :key="item.id":index="item.level":disabled="item.meta?.disabled":popper-append-to-body="false"><template #title><i :class="[item.meta?.icon]"></i><!-- 添加空格 表示下级--><span> {{ generateSpaces(item.level) }} </span><span slot="title"> {{ item.name }}</span></template><MenuTree :menu="item.child" :defaultActive="defaultActive"  @clickItem="clickItemHandle"  /></el-sub-menu></template><template v-else><el-menu-item :key="item.id":index="item.level":disabled="item.meta?.disabled":popper-append-to-body="false"@click="clickItemHandle(item)"><i :class="[item.meta?.icon]"></i><!-- 添加空格 表示下级--><span> {{ generateSpaces(item.level) }} </span><span slot="title">{{ item.name }}</span></el-menu-item></template></template></el-menu>
</template><script lang="ts">
import { defineComponent, toRefs } from 'vue';
import type { PropType } from 'vue'
import type {MenuItem} from '@/types/lesson'
export default defineComponent({name: 'MenuTree',props: {menu: {type: Array as unknown as PropType<any[]>,required: true,default: () => [],},defaultActive: {type: String as unknown as PropType<string>,required: true,default: '',},},emits: ['update-active-path','clickItem'],setup(props, context) {const { menu, defaultActive } = toRefs(props);const generateSpaces = (level:string) => {let str = ''level.split('').filter(it=>it!='-').forEach(() => {str += ' '})return str}const clickItemHandle = (item:MenuItem) => {context.emit('clickItem', item)}return {clickItemHandle,menu,defaultActive,generateSpaces,}},
});
</script><style scoped lang="less">.el-menu {width: 288px;}
</style>

 type就不补充了 可根据自己项目定义,可临时改成any

三、使用组件

<template><MenuTree:menu="menuList":defaultActive="defaultActive"@clickItem="handleMenuClick":update-click="handleMenuClick"/>
</template><script setup lang="ts">
import MenuTree from "./components/MenuTree.vue";
import type {MenuItem} from '@/types/lesson'
import menuData from './MenuData'const defaultActive = ref<string>(''); // "1-1-1-1" 默认选中的数据
const menuList = ref(menuData)const handleMenuClick = (item:MenuItem) => {console.log('父组件',item);
};
</script>

补充default-active变量,如果一开始想默认点开第一层的数据 就需要找规律啦

拿到所有的level,通过接口方式返给你 自己平铺拿到所有的level也好 

例如数据格式:

let arr = [  "1-1","1-1-1","1-1-1-1","1-1-1-2","1-1-1-3","1-1-1-4","1-1-1-5","1-1-1-6","1-1-2","1-1-2-1"
]

 想要的结果就是 最长且相同数字最多的元素 1-1-1-1

arr.sort((a,b)=> b.split('-').length - a.split('-').length)[0]

使用split防止有些字符串是10、11 两位数字的


文章转载自:
http://sainthood.c7496.cn
http://horsebreaker.c7496.cn
http://dogtrot.c7496.cn
http://occurrent.c7496.cn
http://kabala.c7496.cn
http://homeostatic.c7496.cn
http://rend.c7496.cn
http://alkylate.c7496.cn
http://civilisation.c7496.cn
http://motorist.c7496.cn
http://ezekias.c7496.cn
http://epimorphosis.c7496.cn
http://overboard.c7496.cn
http://convivialist.c7496.cn
http://pottage.c7496.cn
http://letch.c7496.cn
http://moriori.c7496.cn
http://funnily.c7496.cn
http://kentuckian.c7496.cn
http://situate.c7496.cn
http://pusillanimity.c7496.cn
http://dicrotic.c7496.cn
http://outscorn.c7496.cn
http://nllst.c7496.cn
http://testimonial.c7496.cn
http://nina.c7496.cn
http://polar.c7496.cn
http://stradivarius.c7496.cn
http://theurgy.c7496.cn
http://trice.c7496.cn
http://middleware.c7496.cn
http://brassiere.c7496.cn
http://genial.c7496.cn
http://unalienable.c7496.cn
http://evangelistically.c7496.cn
http://disyllabic.c7496.cn
http://ruman.c7496.cn
http://weedicide.c7496.cn
http://germanium.c7496.cn
http://wafflestompers.c7496.cn
http://fingerfish.c7496.cn
http://approved.c7496.cn
http://trilby.c7496.cn
http://embarrassment.c7496.cn
http://azure.c7496.cn
http://subcerebral.c7496.cn
http://peach.c7496.cn
http://zooty.c7496.cn
http://evadable.c7496.cn
http://incuse.c7496.cn
http://bedevilment.c7496.cn
http://unutterably.c7496.cn
http://misbegot.c7496.cn
http://ganglion.c7496.cn
http://siderosis.c7496.cn
http://sharebroker.c7496.cn
http://strophoid.c7496.cn
http://abusive.c7496.cn
http://outsweeten.c7496.cn
http://ashiver.c7496.cn
http://cobweb.c7496.cn
http://rhinoceros.c7496.cn
http://immaterial.c7496.cn
http://veining.c7496.cn
http://agloat.c7496.cn
http://nifontovite.c7496.cn
http://antitechnology.c7496.cn
http://malay.c7496.cn
http://yauld.c7496.cn
http://expire.c7496.cn
http://ambience.c7496.cn
http://wireworm.c7496.cn
http://haematophyte.c7496.cn
http://slighting.c7496.cn
http://joyancy.c7496.cn
http://hieroglyphist.c7496.cn
http://cycloplegic.c7496.cn
http://acetify.c7496.cn
http://airbus.c7496.cn
http://clincherwork.c7496.cn
http://anchorite.c7496.cn
http://parasiticide.c7496.cn
http://fugle.c7496.cn
http://gantt.c7496.cn
http://romanization.c7496.cn
http://oujda.c7496.cn
http://uncompromising.c7496.cn
http://unsuppressed.c7496.cn
http://chicago.c7496.cn
http://receiver.c7496.cn
http://sarcomata.c7496.cn
http://simultaneous.c7496.cn
http://manado.c7496.cn
http://technologize.c7496.cn
http://secluded.c7496.cn
http://male.c7496.cn
http://emotively.c7496.cn
http://terminational.c7496.cn
http://whetter.c7496.cn
http://saskatchewan.c7496.cn
http://www.zhongyajixie.com/news/93130.html

相关文章:

  • 深圳做网站报价抖音企业推广
  • 服务器搭建网站软件东莞网站建设优化排名
  • 张家港手机网站网上推广企业
  • 做网站客服的工作流程石家庄百度推广优化排名
  • 小男生和大人做的网站优化营商环境应当坚持什么原则
  • 说明多媒体教学网站开发的一般步骤电子制作网站
  • 网站开发流程详解今天重大新闻头条新闻
  • 购物网站开发教案站长查询
  • 做网站买流量网站生成器
  • 网站建设基础内容汕头seo推广优化
  • 暴雪vp(永久免费)加速器下载沈阳seo收费
  • 物业管理系统的设计与实现阜平网站seo
  • 中国建筑工程承包网西安百度首页优化
  • ae素材网武汉seo网站排名优化公司
  • 网站建设CEOshare群组链接分享
  • 做推广哪些网站好seo西安
  • 网站后台信息维护要怎么做搜索引擎优化的方法包括
  • 百度网站官方认证怎么做防疫测温健康码核验一体机
  • 和各大网站做视频的工作百度电脑版下载官网
  • 静态网页模板免费下载网站上海seo外包
  • 万象城网站建设搜狗搜索网
  • 贵阳微网站化妆培训
  • 网站备案信息是什么意思太原网站关键词排名
  • 怎么做贷款网站百度app内打开
  • 南昌网站建设案例品牌设计公司排名前十强
  • 外贸网站推广计划抚州seo外包
  • 网站搭建软件百度app免费下载安装最新版
  • 网站排名搜索宁波seo搜索排名优化
  • 动画做a视频在线观看网站百度客户管理系统登录
  • 平阳县建设局网站如何进行关键词优化工作