文章目录

  • 嵌套路由的实现
    • 模板文件index.html
    • 入口文件main.js
    • App.vue(App组件)
    • Header.vue(Header组件)
    • router/index.js(路由规则文件)
    • About.vue(About组件)
    • Home.vue(Home组件)
    • News.vue(News组件)
    • Message.vue(Message组件)
  • 路由传递params参数
    • 万事俱备
      • router/index.js(路由规则文件)
      • Detail.vue(Detail组件)
      • Message.vue(Message组件)
    • 东风来了
      • router/index.js(路由规则文件)
      • Detail.vue(Detail组件)
      • Message.vue(Message组件)

嵌套路由的实现


嵌套路由的路由结构如下:

  • /about,About组件
  • /home,Home组件
    • /home/news,News组件
    • /home/message,Message组件

代码涉及的主要文件有:

  1. 模板文件index.html
  2. 入口文件main.js
  3. 入口组件App.vue
  4. 一般组件Header:components/Header.vue
  5. 路由规则文件:ruoter/index.js
  6. 路由组件About:pages/About.vue
  7. 路由组件Home:pages/Home.vue
  8. 路由组件News:pages/Home/News.vue
  9. 路由组件Message:pages/Home/Message.vue

模板文件index.html

<!DOCTYPE html>
<html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1.0"><link rel="icon" href="<%= BASE_URL %>favicon.ico"><link rel="stylesheet" href="<%= BASE_URL %>css/bootstrap.css"><title><%= htmlWebpackPlugin.options.title %></title></head><body><noscript><strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body>
</html>

入口文件main.js

import Vue from 'vue'
import App from './App.vue'
import router from "./router";Vue.config.productionTip = falsenew Vue({render: h => h(App),router
}).$mount('#app')

App.vue(App组件)

<template><div><Header/><div class="row"><div class="col-xs-2 col-xs-offset-2"><div class="list-group"><router-link to="/about" class="list-group-item" active-class="active">About</router-link><router-link to="/home" class="list-group-item" active-class="active">Home</router-link></div></div><div class="col-xs-6"><div class="panel"><div class="panel-body"><router-view></router-view></div></div></div></div></div>
</template><script>
import Header from "./components/Header.vue";
export default {name: "App",components:{Header}
};
</script>

Header.vue(Header组件)

<template><div class="row"><div class="col-xs-offset-2 col-xs-8"><div class="page-header"><h2>Vue Router Demo</h2></div></div></div>
</template><script>
export default {name: "Header"
};
</script>

router/index.js(路由规则文件)

import Vue from "vue";
import VueRouter from "vue-router";
import About from "../pages/About.vue"
import Home from "../pages/Home.vue"
import News from "../pages/News.vue";
import Message from "../pages/Message.vue";Vue.use(VueRouter);export default new VueRouter({routes:[{path:"/about",component:About},{path:"/home",component:Home,children:[{path:"/home/news",component:News},{path:"/home/message",component:Message}]}]
})

About.vue(About组件)

<template><h3>我是About的内容</h3>
</template><script>
export default {name:"About"
}
</script>

Home.vue(Home组件)

<template><div><h2>Home组件内容</h2><div><ul class="nav nav-tabs"><li><router-link to="/home/news" class="list-group-item" active-class="active">News</router-link></li><li><router-link to="/home/message" class="list-group-item" active-class="active">Message</router-link></li></ul><router-view></router-view></div></div>
</template><script>
export default {name:"Home"
}
</script>

News.vue(News组件)

<template><ul><li>news001</li><li>news002</li><li>news003</li></ul>
</template><script>
export default {name:"News"
};
</script>

Message.vue(Message组件)

<template><div><ul><li><a href="/message1">message001</a>&nbsp;&nbsp;</li><li><a href="/message2">message002</a>&nbsp;&nbsp;</li><li><a href="/message/3">message003</a>&nbsp;&nbsp;</li></ul></div>
</template><script>
export default {name:"Message"
};
</script>

路由传递params参数

实现需求:点击message001,详情中显示其ID、TITLE、CONTENT。
因为详情(Detail组件)是一个一般组件,故将其放在components文件夹下,即components文件夹下新建:Detail.vue。

代码变更涉及的文件有:

  1. router/index.js,即路由规则文件。
  2. components/Detail.vue,即Detail组件。
  3. pages/Message.vue,即Message组件。

万事俱备

router/index.js(路由规则文件)

import Vue from "vue";
import VueRouter from "vue-router";
import About from "../pages/About.vue"
import Home from "../pages/Home.vue"
import News from "../pages/News.vue";
import Message from "../pages/Message.vue";
import Detail from "../components/Detail.vue";Vue.use(VueRouter);export default new VueRouter({routes:[{path:"/about",component:About},{path:"/home",component:Home,children:[{path:"/home/news",component:News},{path:"/home/message",component:Message,children:[{path:"/home/message/detail",component:Detail}]}]}]
})

Detail.vue(Detail组件)

<template><ul><li>ID:xxx</li><li>TITLE:xxx</li><li>CONTENT:xxx</li></ul>
</template><script>
export default {name:"Detail"
}
</script>

Message.vue(Message组件)

<template><div><ul><li v-for="messageObj in messageArr" :key="messageObj.id"><router-link to="/home/message/detail">{{messageObj.title}}</router-link></li></ul><hr><router-view></router-view></div>
</template><script>
export default {name:"Message",data(){return {messageArr:[{id:"001",title:"message01"},{id:"002",title:"message02"},{id:"003",title:"message03"}]}}
};
</script>

东风来了

router/index.js(路由规则文件)

import Vue from "vue";
import VueRouter from "vue-router";
import About from "../pages/About.vue"
import Home from "../pages/Home.vue"
import News from "../pages/News.vue";
import Message from "../pages/Message.vue";
import Detail from "../components/Detail.vue";Vue.use(VueRouter);export default new VueRouter({routes:[{path:"/about",component:About},{path:"/home",component:Home,children:[{path:"/home/news",component:News},{path:"/home/message",component:Message,children:[{// 声明接收的params参数path:"/home/message/detail/:id/:title",component:Detail}]}]}]
})

Detail.vue(Detail组件)

<template><ul><li>ID:{{id}}</li><li>TITLE:{{title}}</li><li>CONTENT:{{content}}</li></ul>
</template><script>
const contentArr = [{id:"001",content:"中国消费韧性强潜力足特点没改变"},{id:"002",content:"中国队正式递补东京奥运接力铜牌"},{id:"003",content:"中国人口增长率创57年来最大降幅"}
]export default {name:"Detail",computed:{id(){// 接收params参数return this.$route.params.id;},title(){// 接收params参数return this.$route.params.title;},content(){const contentObjMatched = contentArr.find(contentObj => contentObj.id === this.$route.params.id);return contentObjMatched.content;}}
}
</script>

Message.vue(Message组件)

<template><div><ul><li v-for="messageObj in messageArr" :key="messageObj.id"><!-- 发送params参数 --><router-link :to="`/home/message/detail/${messageObj.id}/${messageObj.title}`">{{messageObj.title}}</router-link></li></ul><hr><router-view></router-view></div>
</template><script>
export default {name:"Message",data(){return {messageArr:[{id:"001",title:"message01"},{id:"002",title:"message02"},{id:"003",title:"message03"}]}}
};
</script>

路由传递params参数(vue)相关推荐

  1. Vue路由传递params参数

  2. [vue] 路由的params参数

    配置路由,声明接收params参数 {path:'/home',component:Home,children:[{path:'news',component:News},{component:Mes ...

  3. 路由的params参数

    文章目录 例子 小结 例子 本篇基于路由的query参数中的完整实例.params参数从路由组件Message.vue传递给路由组件Detail.vue. 修改了router/index.js. im ...

  4. vue2进阶篇:vue-router之路由的params参数

    文章目录 10.7路由的params参数 案例:将案例改为"路由的params参数" 完整代码 本人其他相关文章链接 10.7路由的params参数 注意点1: 跳转路由并携带pa ...

  5. angular路由传递参数_在angular4.0路由传递获取参数的最优方案

    这次给大家带来在angular4.0路由传递获取参数的最优方案,在angular4.0路由传递获取参数的注意事项有哪些,下面就是实战案例,一起来看一下. 研究ng4的官网,终于找到了我想要的方法.我想 ...

  6. 【Vue路由】多级路由、路由传参、命名路由、params使用

    文章目录 多级路由 案例实验 总结 路由传参 案例实验 总结 命名路由 路由的params参数 多级路由 案例实验 我们尝试做出如下的效果: 首先项目结构: 我们直接看四个路由组件: About.vu ...

  7. 【django】路由传递参数

    第一种传参: 子路由: from django.urls import pathfrom film import views urlpatterns = [ path('<int:fid> ...

  8. Flask自定义转换器,实现路由匹配正则表达式参数

    Flask框架动态路由实现参数传递和Django框架有类似之处,但是相比于Django框架,Flask实现复杂的参数就需要自己自定义转换器来实现了,而不能向Django那样直接使用正则表达式 1 # ...

  9. Vue - 路由传递参数

    Vue 2.0  路由传递参数 Vue 路由传递参数 有两种方式: 一.用name传递参数 两步完成用name传值并显示在模板里: 在路由文件src/router/index.js里配置name属性. ...

最新文章

  1. Nginx相关基础配置详解
  2. git fetch -p 获取远程仓库的新分支以及删除远程仓库已删除的分支
  3. 华为云查询弹性云服务器规格信息,通用计算型弹性云服务器规格介绍详情-华为云...
  4. T-SQL、Jet SQL、PL-SQL
  5. C++ priority_queue
  6. 【小伟哥AI之路】海康摄像头近距离不能对焦模糊问题
  7. 【转】Simulink中matlab Function模块全局变量的使用方法总结
  8. opencv检测动态物体
  9. Python数据处理之数据聚合
  10. Royal TSX安装使用
  11. Sqlserver 中的Iif语句
  12. 幸福的烦恼:显卡算力太高而pytorch版本太低不支持
  13. MySQL中单引号、双引号和反引号的区别
  14. 【经验分享】做计算机视觉的你,如何拿到大厂的Offer的?
  15. Android第一行代码——第八章多媒体
  16. 高级会计师英语计算机考试,高级会计师考试是否需要考职称英语和计算机
  17. 金山毒霸大型义卖活动启动 ‘512’爱心版正式上线
  18. matlab 回归 工具箱,matlab回归分析工具箱
  19. 前端开发网页设计(一) :HTML学习
  20. 219二队老虎全程直击报道野外生存挑战赛

热门文章

  1. 分析计算机测色配色不准确的原因,实用技术∣如何有效利用电脑测色配色
  2. HTML5+CSS网页设计——文字样式属性
  3. FileProvider 的使用(Failed to find configured root that contains/storage/emulated/0/DCIM/ )
  4. SequoiaDB 巨杉数据库-时间序列服务
  5. 不可不知的IEEE 802.15.4和ZigBee基础
  6. OllyDBG教程!
  7. MacDown如何设置代码高亮
  8. Http协议详解和版本介绍
  9. 计算机的内存和硬盘哪个内存大,笔记本内存越大越好吗 内存和硬盘区别介绍【详解】...
  10. python能用分支结构写出循环的算法吗_python二级考试-试题8.doc