利用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弹出层永远居中实现思路及代码
Nov 29 Javascript
一个简单的动态加载js和css的jquery代码
Sep 01 Javascript
js判断文本框剩余可输入字数的方法
Feb 04 Javascript
javascript数组排序汇总
Jul 07 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
Aug 05 Javascript
使用jquery.qrcode.js生成二维码插件
Oct 17 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
May 08 Javascript
利用jQuery实现简单的拖曳效果实例代码
Oct 20 jQuery
详解小程序用户登录状态检查与更新实例
May 15 Javascript
layui table 多行删除(id获取)的方法
Sep 12 Javascript
jquery实现简单每周轮换的日历
Sep 10 jQuery
避坑之 JavaScript 中的toFixed()和正则表达式
Apr 19 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
一个程序下载的管理程序(四)
2006/10/09 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
ini_set的用法介绍
2014/01/07 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
php实现贪吃蛇小游戏
2016/07/26 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
Python函数式编程指南(四):生成器详解
2015/06/24 Python
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
Gap英国官网:Gap UK
2018/07/18 全球购物
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
奖学金自我鉴定范文
2013/10/03 职场文书
理工类毕业自我鉴定
2014/02/20 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
nginx配置虚拟主机的详细步骤
2021/07/21 Servers
SQL Server中锁的用法
2022/05/20 SQL Server