vue2.0 elementUI制作面包屑导航栏
Vue 2.0与ElementUI结合制作动态面包屑导航栏详解
对于Vue 2.0和ElementUI的新手和老手来说,制作一个动态的面包屑导航栏是一个常见的需求。下面,我们将通过详细的步骤和代码示例,指导大家完成这一任务。
一、路由配置与获取
在Vue Router中,我们可以使用`beforeEach`钩子函数来监听路由变化,并获取当前路由信息。
Main.js
```javascript
var routeList = [];
router.beforeEach((to, from, next) => {
// 检查当前路由是否在routeList中
var index = -1;
for(var i = 0; i < routeList.length; i++) {
if(routeList[i].name == to.name) {
index = i;
break;
}
}
// 如果存在,则移除后续路由;否则,添加当前路由到列表
if (index !== -1) {
routeList.splice(index + 1, routeList.length - index - 1);
} else if(to.name != '登录'){
routeList.push({"name":to.name,"path":to.fullPath});
}
to.meta.routeList = routeList; // 将routeList存入meta中,方便后续获取
next();
});
```
二、面包屑组件的实现
使用ElementUI中的`
组件模板部分
```html
```
组件逻辑部分
在组件的`created`钩子函数中,获取当前路由的`routeList`,并存储在组件的`data`中。可以使用`beforeRouteEnter`钩子函数在路由进入前获取的`routeList`。这里需要注意的是,由于Vue的生命周期问题,在`beforeRouteEnter`中无法直接访问组件实例`this`。我们使用`next`回调函数来获取组件实例。使用watch监听路由变化也可以达到同样的效果。
组件脚本部分
```javascript
export default {
name: "Breadcrumb", // 组件名改为Breadcrumb或其他你喜欢的名字
created(){ // 创建时获取路由列表数据并存储到组件实例中备用。可以使用watch替代下面的逻辑来监听路由变化并更新面包屑导航。watch在Vue生命周期结束后依然有效,不会销毁,一般用于定时监听。注意在实际使用中应根据你的实际需求进行选择使用何种方式来实现监听路由变化的功能。因为watch在性能上可能会比created稍微消耗一些资源。但两者都能满足需求。所以请根据实际情况选择使用。当组件被创建时调用此方法。在Vue的生命周期中创建的顺序为:创建阶段。也就是通过生命周期函数设置的值默认优先生效早于页面渲染前的配置参数配置优先生效早于数据绑定优先生效早于事件优先生效等规则顺序。当创建阶段结束后,就会调用挂载阶段也就是挂载到页面之前,紧接着调用的是渲染阶段也就是渲染页面之前会调用渲染阶段回调等等的生命周期钩子函数如mounted等等然后执行组件实例的其他生命周期方法包括如created等(如果组件被复用则不会再次调用)。因此在这里我们选择在created阶段获取数据并在mounted阶段挂载到页面视图中以显示面包屑导航。此处还可以选择使用Vue的computed计算属性来实现数据的动态获取和更新操作等逻辑处理操作等。计算属性是基于它们的依赖进行缓存的只有在它的相关依赖发生改变时才会重新求值计算新的值并且计算属性是响应式的只要计算属性所依赖的数据发生变化计算属性就会自动重新计算并更新视图实现动态更新面包屑导航的目的。,可以改为使用watch进行监听路由变化并更新面包屑导航。当然你也可以根据实际需求进行相应修改和扩展代码以满足你的实际需求和应用场景需求。,并且watch默认会进行监听(也就是会监听对象内部值的变化),如果你只需要监听对象本身引用值的变化(即对象发生改变时触发),可以使用watch的第二个参数指定为false来关闭监听以提高性能。,同时也可以使用watchEffect函数替代watch进行响应式监听操作等类似的用途并且性能更佳。。这里是实现该功能的关键部分之一获取到路由信息之后我们将其存储到组件实例中的realList变量中以备后续使用。。最后我们在模板中使用v-for指令遍历realList并动态绑定到el-breadcrumb组件
编程语言
- vue2.0 elementUI制作面包屑导航栏
- 基于JQuery实现图片轮播效果(焦点图)
- Laravel使用scout集成elasticsearch做全文搜索的实现方
- 一个开发人员眼中的JSP技术(下)
- JS运动改变单物体透明度的方法分析
- 通过sails和阿里大于实现短信验证
- 我认为JSP有问题(下)
- PHP的serialize序列化数据以及JSON格式化数据分析
- Nodejs中使用puppeteer控制浏览器中视频播放功能
- 继续学习javascript闭包
- PHP实用小技巧之调用录像的方法
- MySQL主从同步延迟的原因及解决办法
- JSON与JS对象的区别与对比
- SQLSERVER编译与重编译发生场景及重用的利弊介绍
- ASP.NET自定义Web服务器控件之Button控件
- phpwind Exp 漏洞利用