利用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 相关文章推荐
js监听输入框值的即时变化onpropertychange、oninput
Jul 13 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
Aug 05 Javascript
jQuery实现带滑动条的菜单效果代码
Aug 26 Javascript
js实现微信分享代码
Oct 11 Javascript
JavaScript必看小技巧(必看)
Jun 07 Javascript
原生JS实现-星级评分系统的简单实例
Aug 21 Javascript
jquery.validate表单验证插件使用方法解析
Nov 07 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
Apr 26 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
Sep 13 Javascript
vue如何安装使用Quill富文本编辑器
Sep 21 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
Jul 10 jQuery
Vuex modules模式下mapState/mapMutations的操作实例
Oct 17 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
wamp安装后自定义配置的方法
2014/08/23 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&amp;Firefox] 有文档和例子
2007/05/30 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
JS实现随机抽取三人
2019/11/06 Javascript
微信小程序地图绘制线段并且测量(实例代码)
2020/01/02 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
python实现百度关键词排名查询
2014/03/30 Python
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
初步剖析C语言编程中的结构体
2016/01/16 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
Flask-WTF表单的使用方法
2019/07/12 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
python实现从wind导入数据
2019/12/03 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
北美最大的手工艺品零售商之一:Michaels Stores
2019/02/27 全球购物
工作时间擅自离岗检讨书
2014/10/24 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
教师自荐信范文
2015/03/06 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书
Java字符串逆序方法详情
2022/03/21 Java/Android