Element UI的基本使用

news2024/11/16 11:55:37

学习来源,传送门

目录

  • 创建vue项目
  • Element UI主要的标签
  • Vue router 来动态创建左侧导航栏
    • 为何会发生嵌套
    • menu与router的绑定
    • 设置默认展开
    • 设置默认打开页面

创建vue项目

以管理员身份,在选定目录下,使用vue ui
在这里插入图片描述
按照正常配置配好,可以参考上一篇

在这里插入图片描述

此处添加插件
在这里插入图片描述
选择这个插件

在这里插入图片描述
全部默认即可
在这里插入图片描述
再刷新插件页面即安装成功
在这里插入图片描述
然后就可以在idea中打开我们刚刚创建的项目
执行启动命令

npm run serve

在这里插入图片描述
如果出现以下错误
在这里插入图片描述
则需手动在终端输入

npm install --save element-ui

我没有出现这类错误,但成功启动后,打开页面是空白,还报了另一段错误
在这里插入图片描述
后来发现Element UI不支持vue3 只支持vue2,参考文章
在这里插入图片描述
而且我在idea安装element-plus,发现始终报错还无法解决
在vue-cli中安装element-plus,发现还是无法安装
在这里插入图片描述
在这里插入图片描述

折腾半天想在vue3上强上element组件,最终还是失败了
看了视频评论区忠告,还是用vue2吧
在这里插入图片描述
在这里插入图片描述
新项目中重新安装element-ui插件,再从idea中启动项目
看到页面中成功显示element-UI按钮组件即表明安装完成

在这里插入图片描述
然后就可以参考Element UI官方文档
在这里插入图片描述
果然官网就说了是vue2的组件库请添加图片描述
找到container,可以先复制一个容器框架组件使用
在这里插入图片描述
放在div中(一个页面只能有一个div),再把对应的style和script标签覆盖
即可出现一下页面
在这里插入图片描述

Element UI主要的标签

标签名作用
el-container构建整个页面框架啊
el-aside构建左侧菜单
el-menu左侧菜单内容、常用属性如下
:default-openeds默认展开的菜单,通过菜单index
:default-active默认选中的菜单,通过菜单的index值来关联
此处有两种写法
:default-openeds="['1','3']"

或者

default-openeds="1,3"

都可以实现属性对应的效果
区别是加冒号的是v-bind属性,不加冒号是旧的写法
v-bind属性可以自定义参数

标签名作用
el-submenu可展开的菜单,常用属性如下
:index菜单的下标,文本属性,不可是数值属性
template对应el-submenu的内容,必须要有
i图标
el-menu-item菜单的子节点,不可再展开,属性如下
:index菜单的下标,文本属性,不可是数值属性

Vue router 来动态创建左侧导航栏

在view目录下创建几个页面

在这里插入图片描述
页面内容先简单写一下,测试能否正常显示
在这里插入图片描述
用于动态替换el-main中的内容(选中什么内容就对应显示相应的页面)
在这里插入图片描述
在router下的index.js中配置相关路由跳转
在这里插入图片描述
删除App.vue中多余元素,替换el-main中元素,使用 router-view 标签,可动态获取地址栏后半部分内容,找到对应路由,显示相应页面
在这里插入图片描述
在这里插入图片描述
如果出现如下的页面嵌套
在这里插入图片描述
可以参考 这篇文章

能做到正确显示页面内容后,即可进行动态绑定

接下来就需要进行层级关系的包含
将routes改为

const routes = [
  {
    path: "/",
    name: "导航1",
    component: App,
    children: [
      {
        path: '/page1',
        name: '页面1',
        component: Page1
      },
      {
        path: '/page2',
        name: '页面2',
        component: Page2
      },
    ]
  },
  {
    path: "/navigation",
    name: "导航2",
    component: App,
    children: [
      {
        path: '/page3',
        name: '页面3',
        component: Page3
      },
      {
        path: '/page4',
        name: '页面4',
        component: Page4
      }
    ]
  },
]

以此突出层级关系,再将App.vue中原先的 el-aside 中写死的内容替换成

<el-menu>
  <el-submenu v-for="(item,index) in $router.options.routes" :index="(index+'')">
    <template slot="title"><i class="el-icon-message"></i>{{item.name}}</template>
      <el-menu-item v-for="(item2,index2) in item.children" :index="(index+'-'+index2)">
          <template>{{item2.name}}</template>
      </el-menu-item>
  </el-submenu>
</el-menu>

用于循环显示出 routes 中定义好的对象
el-submenu中的for循环遍历出外层的两个对象,name为导航1和导航2
el-menu-item中的for循环遍历出导航1 2下各自的page对象
设置index属性用于区别同级对象,并且可以选中,否则会点击一个全部展开,且index为字符串,需要用(index+‘’)转型包裹,否则按F12在开发者工具中会报错
页面最终如下
在这里插入图片描述

为何会发生嵌套

  1. App.vue 是访问 http://localhost:8080/ 默认就打开的页面(Vue 是单页面应用,只替换App.vue中的部分内容,不会改变这个最大的页面框架
  2. 而 App.vue 包含了 左侧导航栏 el-aside + 右侧内容(含有router-view)
  3. router-view是一个路由占位符,会自动根据路由的配置(index.js)自动匹配组件,展示在页面的router-view中,所以内层又匹配了一次 App.vue

解决方案:
将原来的 App.vue 中的内容全部分离到新的页面,比如说 Index,vue ,只留下router-view标签占位
在这里插入图片描述

将路由配置 router/index.js 中原先的 “/” 匹配App改为 Index

更改前更改后
在这里插入图片描述在这里插入图片描述在这里插入图片描述

再梳理一下,打开http://localhost:8080/默认加载App.vue,而此时 App.vue 中只有view-router,它会到 router/index.js 中匹配路由
在这里插入图片描述

匹配到了 Index 的内容,index 展示导航栏,右侧内容栏,内容栏里的 view-router 再次匹配
在这里插入图片描述

menu与router的绑定

想要点击左侧菜单栏进行动态替换右侧的内容需要达成以下3个条件

  1. el-menu 标签添加 router 属性
  2. 页面中存在 router-view 标签,这是个占位容器,可以自动匹配合适的页面进行显示
  3. el-menu-item 标签的 index 值就是要跳转 router

在这里插入图片描述
此时就可以正确进行绑定了

请添加图片描述

设置默认展开

可以在 el-menu 添加 :default-opends 即可设定默认展开的导航栏,注意此时下标是从0开始
在这里插入图片描述

设置默认打开页面

在 /router/index.js 中 router 设置 redirect 重定向
在这里插入图片描述
这样即便 输入 http://localhost:8080/ 也自动会跳转到 Page2 的页面
最后就是将左侧导航栏队友的页面2设置为选中状态
如果是在标签里面设置 class=”active“ 则所有的导航标签都是选中状态
所以要加判定调剂,当浏览器地址栏的地址与某个 el-menu-item 匹配时,设置这个el-menu-item 标签 class=”active“

:class="$route.path==item2.path?'is-active':''"

$route.path 取当前浏览器地址,如果与当前所遍历到的导航标签匹配,则设置其class为is-active,否则为空
最终就可以实现选中时文字高亮了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381367.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux(ubuntu)系统搭建docker下的LNMP环境

系统环境 系统&#xff1a;Ubuntu 18.04.4 LTS x86_64 管理面板&#xff1a;宝塔面板7.9.8 下载镜像 通过面板下载docker和docker-compose 下载完毕后通过docker->镜像->从仓库拉取拉取镜像ubuntu:20.04 或者通过docker pull ubuntu:20.04拉取镜像 通过docker->容…

代码随想录算法训练营第四十一天 | 01背包问题-二维数组滚动数组,416. 分割等和子集

一、参考资料01背包问题 二维 https://programmercarl.com/%E8%83%8C%E5%8C%85%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8001%E8%83%8C%E5%8C%85-1.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1cg411g7Y6 01背包问题 一维 https://programmercarl.com/%E8%83%8C%E5…

大功率分流电阻器产品阵容进一步扩大,助力大功率应用小型化

全球知名半导体制造商ROHM&#xff08;总部位于日本京都市&#xff09;面向车载、工业设备及白色家电等大功率应用&#xff0c;开发出大功率低阻值分流电阻器“GMR 系列”中额定功率最大的、10W 电阻器“GMR320”。近年来&#xff0c;在车载领域和工业设备领域中&#xff0c;应…

什么是敏捷测试

敏捷 反应快速灵敏。 在敏捷软件开发领域&#xff0c;更注重的以人为核心&#xff0c;迭代&#xff0c;循序渐进的开发方法。相比传统的开发方法&#xff0c;这种方法能更快速的开发&#xff0c;上线&#xff0c;反馈&#xff0c;调整、迭代。以敏捷的姿态去发展产品。 敏捷与…

基于java+swing+mysql员工工资管理系统

基于javaswingmysql员工工资管理系统一、系统介绍二、功能展示1.用户登陆2.员工主要功能3.管理员主要功能三、系统实现1.StudentFrame .java四、其它1.其他系统实现2.获取源码一、系统介绍 该项目功能相对完善&#xff0c;有管理员和普通用户两个角色&#xff0c;分别实现了一…

磷脂酰丝氨酸的作用;CAS:383907-32-2;磷脂酰丝氨酸(phosphatidylserine,PS)

磷脂酰丝氨酸&#xff08;phosphatidylserine&#xff0c;PS&#xff09;又称丝氨酸磷脂&#xff0c;二酰甘油酰磷酸丝氨酸&#xff0c;简称PS&#xff0c;是一类普遍存在的磷脂&#xff0c;通常位于细胞膜的内层&#xff0c;磷酯化合物中的磷酸甘油酯类&#xff0c;是细胞膜组…

数字化时代,企业如何通过技术改造传统客户服务模式

B端产品要从流量思维到客户思维上转变&#xff0c;良好的客户服务能够让B端企业走的越远走的越多&#xff0c;当然&#xff0c;对于所有产品或者企业来说&#xff0c;也唯有客户服务才是走的更远更久的保证&#xff0c;优秀的客户服务团队是企业的潜在优质财富。 搭建客服团队…

ATTO 647N-NHS ester,ATTO 647N SE,ATTO 647N NHS酯,适用于单分子检测应用

基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a;CAS号&#xff1a;N/A中文名&#xff1a;ATTO 647N-琥珀酰亚胺酯&#xff0c;ATTO 647N-活性酯&#xff0c;ATTO 647N NHS酯英文名&#xff1a;ATTO 647 N-NHS&#xff0c;ATTO647N-NHS&#xff0c;ATTO 64…

为什么转行IT行业都会选择学习Python?

现在学习Python的人越来越多了&#xff0c;很多人都疑惑为什么这么多人转行IT都会选择学Python?为什么学Python要参加Python培训班呢?接下来蛋糕为大家答疑解惑一下吧。 虽然Python已经非常普及&#xff0c;但是大部分的大学都还没有开设Python课程&#xff0c;如果想要学习…

XGBoost学习-应用案例

文章目录一、过拟合&#xff1a;剪枝参数与回归模型调参二、XGBoost模型的保存和调用使用Joblib保存和调用模型三、分类案例&#xff1a;XGB中的样本不均衡问题四、 XGBoost类中的其他参数和功能总结一、过拟合&#xff1a;剪枝参数与回归模型调参 class xgboost.XGBRegressor…

2023前端vue面试题(边面边更)

Vue中key的作用 vue 中 key 值的作用可以分为两种情况来考虑&#xff1a; 第一种情况是 v-if 中使用 key。由于 Vue 会尽可能高效地渲染元素&#xff0c;通常会复用已有元素而不是从头开始渲染。因此当使用 v-if 来实现元素切换的时候&#xff0c;如果切换前后含有相同类型的…

只用最适合的 | 主流 .NET 报表控件全面对比

随着 .NET 平台的出现&#xff0c;报表相关的开发控件随着而来&#xff0c;已经有若干成熟的产品可供开发人员使用&#xff0c;本文旨在通过从不同维度对比目前最流行的3款 .NET报表控件&#xff1a;FastReport、Stimulsoft、水晶报表&#xff0c;给所有报表开发人员在做产品选…

家用洗地机哪款最好用?全球洗地机十大品牌

近年来&#xff0c;智能家用电器洗地机已经融入到我们生活中了&#xff0c;成为最受欢迎的清洁工具了&#xff0c;家用洗地机吸拖洗一体&#xff0c;不用先扫后拖那么麻烦&#xff0c;只需轻轻一推&#xff0c;就能把扫地、拖地、擦地的活全干了&#xff0c;操作简单&#xff0…

【iOS】—— 初识RAC响应式编程

RAC&#xff08;ReactiveCocoa&#xff09; 文章目录RAC&#xff08;ReactiveCocoa&#xff09;响应式编程和函数式编程的区别函数式编程响应式编程响应式编程的优点RAC操作1.利用button点击实现点击事件和传值2.RACSignal用法RACSignal总结&#xff1a;3.对于label的TapGestur…

Java | IO 模式之 JavaNIO 应用

文章目录NIO1 Java NIO 基本介绍2 NIO 和 BIO 的比较3 NIO 三大核心原理示意图3.1 Buffer缓冲区3.2 Channel&#xff08;通道&#xff09;3.3 Selector选择器3.4 总结4 NIO核心一&#xff1a;缓冲区(Buffer)4.1 缓冲区&#xff08;Buffer&#xff09;4.2 Buffer 类及其子类4.3 …

泛型与Map接口

Java学习之道 泛型 泛型这种参数类型可以用在类、方法和接口中&#xff0c;分别被称为泛型类&#xff0c;泛型方法&#xff0c;泛型接口 参数化类型&#xff1a;将类型由原来的具体的类型参数化&#xff0c;在使用/调用时传入具体的类型JDK5引入特性提供了安全检测机制&#xf…

[oeasy]python0097_苹果诞生_史蒂夫_乔布斯_沃兹尼亚克_apple_I

苹果诞生 回忆上次内容 上次时代华纳公司 凭借手中的影视ip和资本吞并了雅达利公司 此时 雅达利公司 曾经开发过pong的 优秀员工 乔布斯 还在 印度禅修 寻找自我 看到游戏行业 蓬勃发展 乔布斯 也想有自己的 一番天地 可是 他的机会在哪里呢?&#x1f914; Jobs 跟着 Wozn…

顺序表——重置版

本期我们来实现数据结构的顺序表&#xff08;这个之前写过一次&#xff0c;不过本期和之前可能会略有不同&#xff0c;但大体相同&#xff09;&#xff0c;大家可以看一下我们之前完成的顺序表 (6条消息) 顺序表及其多种接口的实现_顺序表类中实现接口方法_KLZUQ的博客-CSDN博客…

Linux环境下验证python项目

公司大佬开发的python rpa跑数项目&#xff0c;Windows运行没问题后&#xff0c;需要搭建一个linux环境进行验证&#xff0c;NOW START&#xff01; Install VMware官网 下载好之后打开按步骤安装 最后一步会让填许可证&#xff08;密钥&#xff09;&#xff0c;这里自行百…

Meta开放小模型LLaMA,性能超过GPT-3

论文地址&#xff1a;https://research.facebook.com/file/1574548786327032/LLaMA--Open-and-Efficient-Foundation-Language-Models.pdf 介绍 LLaMA&#xff0c;是Meta AI最新发布的一个从7B到65B参数的基础语言模型集合。在数以万亿计的token上训练模型&#xff0c;并表明…