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

网站建设属于哪个税目nike网站建设方案

网站建设属于哪个税目,nike网站建设方案,财务公司管理系统,东莞有什么好厂一、大概流程 二、用到的Vue3知识 1、组件通信 (1)父给子 在vue3中父组件给子组件传值用到绑定和props 因为页签的数组要放在父页面中, data(){return {tabs: []}}, 所以顶部栏需要向父页面获取页签数组 先在页签页面中定义props用来接…

一、大概流程

二、用到的Vue3知识

1、组件通信

(1)父给子

在vue3中父组件给子组件传值用到绑定和props

因为页签的数组要放在父页面中,

data(){return {tabs: []}},

所以顶部栏需要向父页面获取页签数组

先在页签页面中定义props用来接收

  props:{tabs: Array // 声明一个 props,指定数据类型为数组},

再在父页面中的子页面标签中用:绑定符绑定

  <NavBar :tabs="tabs" ></NavBar>

这样就可以将父页面的页签数组传到子页面里

(2)子给父

因为子页面中存在路由跳转新页面操作时候需要增加页签,也就是将新的页面作为tab加入到页签数组中,而页签数组放在父页面里,所以需要子给父传值

子给父传值是通过调用方法实现用this.$emit("通信名",数据)实现

比如这里的添加页签操作则是

     this.$emit("addtab",tab)

然后在父页面的子标签里用@接受通信名并绑定调用的方法,

 <router-view  @addtab="addTab"></router-view>

 同时将数据作为data参数传入方法

    addTab(data) {//最简单的push操作,还没完成其它逻辑this.tabs.push(data);}

三、实现整体逻辑

1、父页面中

(1)编写增加页签的逻辑

    addTab(data) {// this.tabs.push(data);// 判断是否已存在相同的 title 和 routeconst exists = this.tabs.some(tab => tab.title === data.title && tab.route === data.route);if (!exists) {this.tabs.forEach(tab => {tab.selected = false;});this.tabs.push(data);}else{this.tabs.forEach(tab => {tab.selected = tab.title === data.title && tab.route === data.route;});}// 更新浏览器缓存this.saveTabsToLocalStorage()}

(2)编写关闭页签的逻辑

    closeTab(index) {this.tabs.splice(index, 1); // 从数组中移除页签if (this.tabs.length > 0) {this.tabs.forEach(tab => {tab.selected = false;});// 如果还有其他选项卡,跳转到最后一个选项卡的路由const lastTab = this.tabs[this.tabs.length - 1];this.$router.push(lastTab.route);this.tabs[this.tabs.length - 1].selected=true;} else {// 如果没有选项卡了,跳转到默认的首页路由this.$router.push("/1/C");}// 更新浏览器缓存this.saveTabsToLocalStorage()},

(3)页签数组缓存到浏览器和从缓存加载

 mounted() {this.loadTabsFromLocalStorage();},methods:{// 缓存到本地saveTabsToLocalStorage() {localStorage.setItem('tabs', JSON.stringify(this.tabs));},// 从缓存加载loadTabsFromLocalStorage() {const storedTabs = localStorage.getItem('tabs');if (storedTabs) {this.tabs = JSON.parse(storedTabs);}},}

缓存页签数据到浏览器,页面刷新时,页签状态保留当前状态不会清空

(4) 和顶部栏通信

<NavBar :tabs="tabs" @asideCollapse="collapse" @closetab="closeTab">

(5)和有产生页签需求的子页面通信

<router-view  @addtab="addTab"></router-view>

2、顶部栏

(1)渲染页签

    <div class="top-bar"><!-- 渲染页签 --><divv-for="(tab, index) in tabs":key="index":class="['tab', { 'selected': tab.selected }]"@click="switchTab(tab)">{{ tab.title }}<span class="close-btn" @click.stop="closeTab(index)">×</span></div></div>

(2)编写页签样式

<style lang="scss" scoped>.top-bar{display: flex;margin-left: 20px;caret-color: transparent; /*去除鼠标光标*/width: 100vw;overflow-x: auto; /* 允许横向滚动 *///overflow: hidden;div:hover{cursor:pointer;}div:not(:first-child){margin-left: 10px;}div{display: flex;justify-content: center;align-items: center;padding: 5px;font-weight: 500;font-size: 14px;color: #606266;border: 1px solid #DCDFE6;border-radius: 4px;//width: 100%;height: 30px;white-space: nowrap; /* 防止内容换行 */span{width: 15px;height: 15px;margin-left: 4px;display: flex;align-items: center;justify-content: center;}}.tab{background-color: #eeeeee;span:hover{background: linear-gradient(rgba(96, 98, 102, 0.1), rgba(96, 98, 102, 0.1)); /* 在悬停时更改透明度 */}}.selected{background-color: #c6fce5;}
}</style>

(3)接受父页面数据

  props:{tabs: Array // 声明一个 props,指定数据类型为数组},

(4)向父页面发送关闭页签请求

    // 关闭页签closeTab(index) {this.$emit("closetab",index)},

3、子页面

(1)向父页面发送增加页签请求

  methods:{addTab(tab){this.$emit("addtab",tab)}}

 (2)在有跳转路由的需求的标签绑定请求

  比如菜单项

        <el-menu-item index="/1/C" @click="addTab({title: '模拟计算', // 页面标题route: '/1/C', // 路由selected: true // 设置选中状态})">

四、展示效果

五、可能会出现的错误

1、在本地环境运行无错误,部署到生产环境后会报

TypeError: Cannot read properties of null (reading 'insertBefore')的错误

解决方案 

(1)NavBar顶部栏组件中v-for渲染tabs数组没有判断tabs是否为空

(2)切换vue为版本 (vue@3.2.45) 来修复它。

npm i vue@3.2.45

http://www.yayakq.cn/news/338197/

相关文章:

  • 中国建设工程质量安全管理协会网站阿里巴巴上面可以做网站
  • 手机上的网站和pc机上的网站的区别怎么做质量高的网站
  • 无锡电子商务网站建设公司asp.net 网站开发 pdf
  • 如何建设网站兴田德润在那里发布信息的网站
  • 什么是网站挂马金融直播网站建设
  • windows 2012做网站伪静态成都网站制作怎么收费
  • 贵州网站建设服务平台wordpress模板文件是哪个文件夹
  • 网站数据库连接出错wordpress 的环境搭建
  • 云南云南省建设厅网站哪些网站可以做平面设计
  • 常用的建一个网站要多少钱163手机移动网站
  • 自己怎么建立网站品牌建设的最高境界是什么
  • 申请免费的网站网站设计目标 优帮云
  • 相亲网站上做投资的女生廊坊做网站多少钱
  • 做seo网站推广价格浪琴女士手表网站
  • 软件下载网站如何履行安全网络软文怎么写
  • 网站公司的利润怎么查看网站虚拟空间
  • 做网站放什么wordpress乐趣公园缩略图不显示
  • 怎么做网站步骤wordpress 修改 缩进按钮
  • 网站开发模板系统合肥网站设计goz
  • 免费行情网站推荐建立公司的流程
  • dw个人网站模板网站建设管理总结
  • 网站建设中药尽量使用图片工作表
  • 织梦网站做图床如何搭建门户网站
  • 高端建站收费企业网站定制
  • 保护环境做网站素材沈阳百度快照优化公司
  • 黄冈智能网站建设平台wordpress书籍
  • 潍坊建设厅官方网站vps网站管理助手教程
  • 福州网站制作培训wordpress菜单用法
  • 一台服务器可以做几个网站wordpress站点标题是什么
  • 推广网站wap端怎么做it黑马官网