利用vue-router实现二级菜单内容转换


Posted in Javascript onNovember 30, 2016

二级菜单导航是一种很普遍的功能,一般网页都会有这个功能。如果是平常的做法就是改变url,跳到相应的页面;还有一种就是frame。
如果用vue的话,可以用vue-router改变<router-view>里面的组件,这样就能做到不刷新页面都能跳到相应“页面”。其实url地址还是变了,但是他没有刷新页面其他位置的内容,只是改变了<router-view>里面的组件,渲染了新的组件。
在线demo:http://runjs.cn/code/9th3cgxo

html

使用 Vue.js 时,我们就已经把组件组合成一个应用了,当你要把 vue-router 加进来,只需要配置组件和路由映射,然后告诉 vue-router 在哪里渲染它们。

<div id="app">
 <div class="leftBox">
 <!-- 使用 router-link 组件来导航. -->
 <!-- 通过传入 `to` 属性指定链接. -->
 <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
 <ul>
 <li><router-link to="/" actived>首页</router-link></li>
 <li><router-link to="/article">文章</router-link></li>
 <li><router-link to="/picture">图片</router-link></li>
 <li><router-link to="/music">音乐</router-link></li>
 </ul>
 </div>
 <div class="rightBox">
 <!-- 路由出口 -->
 <!-- 路由匹配到的组件将渲染在这里 -->
 <router-view></router-view>
 </div>
</div>

js

定义路由。每个路由应该映射一个组件。 其中”component” 可以是组件等。 创建和挂载根实例。记得要通过 router 配置参数注入路由,从而让整个应用都有路由功能

var Home = {template: '<div>home</div>'}

var router = new VueRouter({
 routes: [
 {path: '/', component: Home},
 {path: '/picture', component: Picture},
 {path: '/music', component: Music},
 {path: '/article', component: Artlist},
 {path: '/article/:id', component: Article}
 ]
})
new Vue({
 el: "#app",
 router: router
})

切换到了文章部分时,我又弄了个文章列表,点击文章标题才进入文章内容。

  • 这里我写死了数据,实际可以通过ajax拿到数据赋值。
  • 我模拟了loading…,根据数据驱动的思维,通过v-if="loading"来判断这个loading是否出现。
  • 动画切换记得要指定不同的key,不然是没有效果的。
  • 创建和改变路由的时候,都要通过传递url的参数去一个方法拿到数据,这里就要createdwatch '$route'
  • 拿url参数是通过$route.params或$route.query等,具体看教程
  • 返回上一级是用router.go(-1),相当于按退回按钮
var Article = {
 template: '<div class="post">\
 <div class="loading" v-if="loading">loading.....</div>\
 <transition name="slide">\
 <div v-if="post" class="content" :key="post.id">\
 <button @click="back">返回</button>\
 <p>{{post.title}}</p>\
 <P>{{post.body}}</P>\
 </div>\
 </transition>\
 </div>',
 data: function() {
 return {
 loading: false,
 error: null,
 post: null
 }
 },
 created:function() {
 this.fetchData();
 },
 watch: {
 '$route': 'fetchData'
 },
 methods: {
 fetchData:function () {
 this.error = this.post = null;
 this.loading = true;
 getPost(this.$route.params.id,(err,post) => {
 this.loading = false;
 if(err) {
 this.error = err.toString();
 }else {
 this.post = post
 }
 })
 },
 back: function() {
 router.go(-1);
 }
 }
}

本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
ajax异步刷新实现更新数据库
Dec 03 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
Jun 08 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
Dec 04 Javascript
javascript对中文按照拼音排序代码
Aug 20 Javascript
jqueryUI里拖拽排序示例分析
Feb 26 Javascript
JS把内容动态插入到DIV的实现方法
Jul 19 Javascript
Node.js的环境安装配置(使用nvm方式)
Oct 11 Javascript
让微信小程序支持ES6中Promise特性的方法详解
Jun 13 Javascript
利用jQuery异步上传文件的插件用法详解
Jul 19 jQuery
JavaScript的级联函数用法简单示例【链式调用】
Mar 26 Javascript
封装一下vue中的axios示例代码详解
Feb 16 Javascript
Flexible.js可伸缩布局实现方法详解
Nov 13 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
Nov 30 #Javascript
微信小程序 欢迎界面开发的实例详解
Nov 30 #Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
Nov 30 #Javascript
微信小程序之小豆瓣图书实例
Nov 30 #Javascript
微信小程序之ES6与事项助手的功能实现
Nov 30 #Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
Nov 30 #Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
Nov 30 #Javascript
You might like
PHP面向对象分析设计的经验原则
2008/09/20 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
小程序实现发表评论功能
2018/07/06 Javascript
js中的闭包实例展示
2018/11/01 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
Python实现二分查找算法实例
2015/05/26 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
Python科学画图代码分享
2017/11/29 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
英文升职感谢信
2015/01/23 职场文书
律师催款函范文
2015/06/24 职场文书
初中班主任心得体会
2016/01/07 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
Python内置的数据类型及使用方法
2022/04/13 Python