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

遵义建设厅网站网络营销总结及体会

遵义建设厅网站,网络营销总结及体会,如何做公司自己的网站,中国建筑人才网证书查询一、需求 需要实现效果#xff1a;左侧菜单栏与右侧内容部分联动#xff0c;当点击左侧的菜单#xff0c;右侧会展示对应的tab#xff0c;没有点击时#xff0c;不展示#xff08;如刚进入页面没有点击菜单#xff0c;则没有tab#xff09;#xff1b;点击后没有关闭…一、需求 需要实现效果左侧菜单栏与右侧内容部分联动当点击左侧的菜单右侧会展示对应的tab没有点击时不展示如刚进入页面没有点击菜单则没有tab点击后没有关闭tab再打开其他菜单如测试项目2则测试项目2的tab高亮为选中状态。 实现效果 二、整体实现思路 1.环境vue、element-ui 2.首先在el-tab-pane中是展示的tab如上图的测试项目1、测试项目2。因此我们创建了一个数组activeTabs来储存tab的信息。 :labelgetTabTitle(route.path) 对应的则是tab展示的标题内容我用了一个方法getTabTitle获取路由对应的标题。:nameroute.meta.title 则是与el-tabs下的 v-modelactiveName相对应如果name的值与v-model的值一样则表示当前选中的tab。代码中v-modelactiveName 用于控制 el-tabs 组件的当前活动标签而 :nameroute.meta.title 用于为每个标签指定一个唯一的名称这样就可以通过这个名称来确定当前选中的标签。通过这两个指令影响到同一个数据例如 activeName 和 route.meta.title以达到实现标签切换的效果。当前选中的状态由 tab-clickselectTab 事件处理器决定。当点击一个标签时tab-click 事件会触发 selectTab 方法。在 selectTab 方法中this.activeName 属性根据点击的标签的 meta.title 进行更新。v-modelactiveName 会自动反映这个变化使得 el-tabs 组件根据 activeName 的值来确定哪个标签是当前选中的从而产生高亮效果。 edithandleTabsEdit是为了对tab做一些操作点击 tabs 的新增按钮或 tab 被关闭后触发。 值得注意的是v-modelactiveName、selectTab、 :nameroute.meta.title几个的对应关系以及其数据结构。 el-tabsv-modelactiveNameeditableedithandleTabsEdittab-clickselectTabel-tab-panev-for(route, index) in activeTabs:keyindex:labelgetTabTitle(route.path):nameroute.meta.title/el-tab-pane/el-tabs 三、我遇到的问题 1.数据结构问题一开始拿到的只是name或label、path这样是不行的最好还是拿到当前对应菜单栏的完整router方便我们操作。 2.点击菜单栏对应的tab没有高亮但内容显示了 3.点击关闭tabtab关闭了但下面的内容没有关闭没有跳转到下一个剩余tab的内容。 4.点击tab之间相互切换功能是正常的页面内容切换但存在问题tab没有高亮有时候要点击两次才会高亮判段问题是出在没有更新调用selectTab。 四、具体代码 templatesection classapp-mainel-tabsv-modelactiveNameeditableedithandleTabsEdittab-clickselectTabel-tab-panev-for(route, index) in activeTabs:keyindex:labelgetTabTitle(route.path):nameroute.meta.title/el-tab-pane/el-tabstransition namefade-transform modeout-in //展示具体页面内容content //自定义组件div classrouter-inner-containerrouter-view v-showactiveName :keykey / //v-showactiveName非常重要注意不要用v-if用来与当前tab对应即关闭tab也关闭当前内容。/div/content/transition/section /templatescript import { mapGetters } from vuex; //引入vuex来拿到我的所有菜单路由export default {name: AppMain,props: {noTag: {type: Boolean,default: false},noMap: {type: Boolean,default: false}},data() {return {activeName: null, // 默认选中第一个 tabactiveTabs: [] // 存储当前显示的 tab};},computed: {...mapGetters([sidebar, sidebarRouters]), //菜单所有路由sidebarRouterskey() {return this.$route.path;},isStatisticsView() {if (this.$route.path /home/index) {return true;} else {return false;}}},methods: {selectTab(tab, event) {if (Array.isArray(tab) tab.length 0) { //由于数据结构问题做的判段拿到activeName this.activeName tab[0].meta.title;} else if (typeof tab object tab.meta) {this.activeName tab.meta.title;} else if (Array.isArray(tab) !tab.length 0) {this.activeName ; //当所有tab都关闭时关闭所有内容否则页面会tab都关闭了但还有最后一个关闭的tab的页面内容。}},handleTabsEdit(targetName, action) {// 处理标签页编辑事件if (action remove) {// 删除标签页this.removeTab(targetName);}},removeTab(targetName) {const tabs this.activeTabs;const index tabs.findIndex((tab) tab.meta.title targetName);if (index ! -1) {tabs.splice(index, 1);this.selectTab(tabs, event); //很重要更新activeName否则删除后不会切换下一个对应tab也不会切换页面内容}},updateActiveTabs() {const currentPath this.$route;// 判断对象是否在 activeTabs 中存在const existsInTabs this.activeTabs.some((tab) tab.hasOwnProperty(path) tab.path currentPath.path);if (!existsInTabs) {// 如果当前路由不在 activeTabs 中将其添加进去this.activeTabs.push(currentPath);}this.selectTab(currentPath, event); //很重要更新activeName否则切换菜单栏时对应的tab不会高亮不会切换},findMatchingRoute(routes, targetPath) { //为了处理数组的for (const route of routes) {if (route.path targetPath) {return route;}if (route.children route.children.length 0) {const matchingChild this.findMatchingRoute(route.children,targetPath);if (matchingChild) {return matchingChild;}}}return null;},getTabTitle(route) {// 根据路由信息获取对应的标题const matchingRoute this.findMatchingRoute(this.sidebarRouters, route);return matchingRoute ? matchingRoute.meta.title : ;},findMatchingMenu(routes, targetTitle) {// 递归查找匹配的菜单项for (const route of routes) {if (route.meta) {if (route.meta.title targetTitle) {return route;}if (route.children route.children.length 0) {const matchingChild this.findMatchingMenu(route.children,targetTitle);if (matchingChild) {return matchingChild;}}}}return null;}},mounted() {},watch: {$route(to, from) {if (to to.meta !to.meta.noMap) {this.$nextTick(() {this.$refs.jmap.resizeMap();});}// 更新 activeTabsthis.updateActiveTabs();},activeName: {immediate: true,deep: true,handler(val, oldVal) {if (val val ! oldVal) {const matchingMenu this.findMatchingMenu(this.sidebarRouters, val);if (matchingMenu) {this.$router.push({ path: matchingMenu.path }); //切换tab时切换路由来对应想要页面内容}}}}} }; /scriptstyle langscss .app-main {/*50 navbar */height: calc(100vh - 50px);width: 100%;position: relative;overflow: hidden;display: flex;flex-direction: column;background: #f3f3f3;.no-header {height: 100vh;} } .fixed-header .app-main {padding-top: 60px; }.single-layout {.app-main {padding: 0px;} }.map-style .router-inner-container {position: absolute; } /stylestyle langscss // fix css style bug in open el-dialog .el-popup-parent--hidden {.fixed-header {padding-right: 15px;} } .no-header {.float-panel {height: 100vh;} } /style
http://www.pierceye.com/news/693064/

相关文章:

  • 茂名建站公司南通长城建设集团有限公司网站
  • 网络平台怎么建立网站吗做暧暧视频网站安全吗
  • 免费域名x网站网站前期准备工作
  • 陕西网站建设公司排名智能优化网站
  • 做瞹瞹网站萍乡做网站的公司有哪些
  • 网站建设的类型有几种wordpress搜索返回页面内容
  • 建设网站备案与不备案区别招远建网站首选公司
  • 四川住房和城乡建设厅网站三类人员软文网站备案如何查询
  • 个人与企业签订网站开发合同网页制作教程实例
  • 做网站遇到竞争对手怎么办wordpress中文版邮件发送
  • 美橙互联旗下网站渐变网站
  • 做网站域名需要在哪里备案微信答题小程序
  • 购物网站页面布局个人站长做导航网站
  • wordpress 增强编辑器网站暂时关闭 seo
  • 重庆网站设计开发培训广西省住房和城乡建设厅官网
  • 购物网站模板免费下载网站排名快速提升工具
  • 中山制作网站的公司滨江区网站开发公司
  • 申请建设工作网站的函酒店网站建设方案策划方案
  • 宠物店网站模板你是网站设计有限公司的项目经理
  • 潍坊网站开发公司2018做网站还赚钱吗
  • 做化妆品网站怎样wordpress映射到外网访问
  • 关于加强门户网站建设爱客crm客户管理系统
  • 网站备案的是域名还是空间电子商务网站建设携程
  • 建设企业网站管理系统目的开发一个网站的费用
  • 网站开发和浏览器兼容问题软文广告案例分析
  • 更新网站的方法自贡网站建设哪家好
  • 沈阳网络建网站个人电子商务网站建设的总体目标
  • asp 大型网站开发优化公司治理结构
  • 做外贸 建网站要注意什么ssr网站怎么做
  • 杭州做兼职网站建设老五wordpress