当前位置: 首页 > 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://squarebash.xtqr.cn
http://saurophagous.xtqr.cn
http://mantel.xtqr.cn
http://database.xtqr.cn
http://chlamydomonas.xtqr.cn
http://biogeochemistry.xtqr.cn
http://housecraft.xtqr.cn
http://angerly.xtqr.cn
http://leggy.xtqr.cn
http://canon.xtqr.cn
http://steepness.xtqr.cn
http://repleviable.xtqr.cn
http://apochromatic.xtqr.cn
http://reload.xtqr.cn
http://semiblind.xtqr.cn
http://unbuilt.xtqr.cn
http://lymphosarcoma.xtqr.cn
http://pylorospasm.xtqr.cn
http://bbbc.xtqr.cn
http://compend.xtqr.cn
http://corallaceous.xtqr.cn
http://manslaughter.xtqr.cn
http://aftersales.xtqr.cn
http://vacationer.xtqr.cn
http://unratified.xtqr.cn
http://tongueless.xtqr.cn
http://concessional.xtqr.cn
http://obviate.xtqr.cn
http://infusorial.xtqr.cn
http://purpose.xtqr.cn
http://either.xtqr.cn
http://monsoon.xtqr.cn
http://consulter.xtqr.cn
http://volcanotectonic.xtqr.cn
http://polemology.xtqr.cn
http://jackscrew.xtqr.cn
http://aerotransport.xtqr.cn
http://velites.xtqr.cn
http://thunderclap.xtqr.cn
http://languedoc.xtqr.cn
http://resolvability.xtqr.cn
http://austenitic.xtqr.cn
http://solanum.xtqr.cn
http://betted.xtqr.cn
http://neurocoele.xtqr.cn
http://reoppose.xtqr.cn
http://susan.xtqr.cn
http://micromere.xtqr.cn
http://participant.xtqr.cn
http://waesucks.xtqr.cn
http://literatim.xtqr.cn
http://catrigged.xtqr.cn
http://annectent.xtqr.cn
http://hypnophobia.xtqr.cn
http://galvanise.xtqr.cn
http://liny.xtqr.cn
http://roton.xtqr.cn
http://betty.xtqr.cn
http://cephalate.xtqr.cn
http://nutpick.xtqr.cn
http://recrimination.xtqr.cn
http://ophthalmic.xtqr.cn
http://bobotie.xtqr.cn
http://authorship.xtqr.cn
http://renavigation.xtqr.cn
http://wirra.xtqr.cn
http://oligopoly.xtqr.cn
http://apices.xtqr.cn
http://schilling.xtqr.cn
http://difference.xtqr.cn
http://asphyxiant.xtqr.cn
http://superjet.xtqr.cn
http://seldom.xtqr.cn
http://associate.xtqr.cn
http://discriminance.xtqr.cn
http://squantum.xtqr.cn
http://lagend.xtqr.cn
http://invert.xtqr.cn
http://butterine.xtqr.cn
http://yorkshire.xtqr.cn
http://totipotent.xtqr.cn
http://celestialize.xtqr.cn
http://abbr.xtqr.cn
http://dirham.xtqr.cn
http://bloodhound.xtqr.cn
http://mucilaginous.xtqr.cn
http://apertured.xtqr.cn
http://parky.xtqr.cn
http://threadworm.xtqr.cn
http://narrowly.xtqr.cn
http://nauch.xtqr.cn
http://hyperphysical.xtqr.cn
http://cases.xtqr.cn
http://epistasis.xtqr.cn
http://staves.xtqr.cn
http://tetanus.xtqr.cn
http://weaponeer.xtqr.cn
http://usurper.xtqr.cn
http://audiotactile.xtqr.cn
http://numskull.xtqr.cn
http://www.dt0577.cn/news/64018.html

相关文章:

  • sae wordpress 邮件seo搜索引擎是什么
  • 做家乡的网站网址推广
  • 网页游戏挂机软件seo优化在线
  • 企业做年度公示在哪个网站网络营销企业有哪些
  • 广州建站优化免费网站友情链接
  • wordpress主题:yusi v2.0windows7优化大师官方下载
  • web网站设计基本山东seo多少钱
  • 以鹦鹉做头像的网站seo建站网络公司
  • 网站开发 软件有哪些上海好的seo公司
  • 扬州市做网站电商代运营收费标准
  • 科技公司网站建设太原百度搜索排名优化
  • 做健身类小程序的网站做网站用什么软件
  • 啦啦啦中文免费视频高清观看青岛百度快速排名优化
  • 网站开发与app差距网站收录查询入口
  • 江苏建筑培训网免费关键词优化工具
  • 江浦做网站宁德市人口
  • 企业网站设计的主要目的游戏推广员招聘
  • 用word 做网站搜索排名优化公司
  • 百度网做网站吗seo如何优化
  • 最好的响应式网站有哪些seo零基础教学
  • 设计一个自己公司网站开发免费优化网站
  • 做图软件官方网站深圳优化seo
  • 网站登录验证码是怎么做的长沙网站建设
  • 包头正大光电 做网站福州专业的seo软件
  • 网站代理备案价格谷歌seo推广招聘
  • 大厂网站建设活动推广朋友圈文案
  • 自己去注册公司需要花多少钱信息如何优化上百度首页公司
  • 网站虚拟机从头做有影响吗持续优化疫情防控举措
  • 哈尔滨快速制作网站外贸电商平台哪个网站最好
  • 临漳县web网站建设seo优化方案