利用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网页播放声音实现代码兼容各种浏览器
Sep 22 Javascript
JavaScript验证电子邮箱的函数
Aug 22 Javascript
JScript中的条件注释详解
Apr 24 Javascript
Angular中使用$watch监听object属性值的变化(详解)
Apr 24 Javascript
AngularJS获取json数据的方法详解
May 27 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
Jun 21 Javascript
Bootstrap Table 删除和批量删除
Sep 22 Javascript
详解Angular结合zTree异步加载节点数据
Jan 20 Javascript
vue 组件使用中的一些细节点
Apr 25 Javascript
微信小程序修改swiper默认指示器样式的实例代码
Jul 18 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
Jul 28 Javascript
关于Javascript闭包与应用的详解
Apr 22 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中的mongodb select常用操作代码示例
2014/09/06 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
Javascript实现动态菜单添加的实例代码
2013/07/05 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
如何实现删除numpy.array中的行或列
2018/05/08 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
python 动态生成变量名以及动态获取变量的变量名方法
2019/01/20 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
python async with和async for的使用
2019/06/20 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
python怎么对数字进行过滤
2020/07/05 Python
Python如何批量生成和调用变量
2020/11/21 Python
复古斯堪的纳维亚儿童服装:Baby go Retro
2017/09/09 全球购物
Orlebar Brown官网:设计师泳裤和泳装
2020/12/08 全球购物
中学生差生评语
2014/01/30 职场文书
高级工程师英文求职信
2014/03/19 职场文书
公司口号大全
2014/06/11 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
煤矿安全保证书
2015/02/27 职场文书
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers