vue-router2
六,导航钩子
导航钩子函数主要是在导航跳转的时候做一些操作,比如跳转页面之前,进行判断 进而选择跳转到哪里 钩子函数根据生效范围根据其生效范围可以分为全局钩子函数,路由独享钩子函数 和 组件钩子函数、 全局钩子函数
在路由文件里 对全局进行拦截数据
router.beforeEach((to, from, next)=>{
  next();
});
router.afterEach((to, from, next) => {
    console.log(to.path);
});
上面方法接受三个参数
to: 下个路由
from: 正离开的路由
next: 一定要调用该方法来resolve钩子
next() 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed(确定的)。
next(false). 中断当前的导航。
next('/')或next({path: '/'}), 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。
路由钩子函数:
将上述方法写在路由里
{
      path: '/helloworld',
      name: 'HelloWorld',
      component: resolve => require(['@/views/HelloWorld'], resolve), // 使用懒加载
      beforeEnter(to, from, next) {
        console.log(111)
        console.log(to.path); // 打印 /helloworld
        console.log(from.path); // 打印 /
        next(); // 跳到/helloworld 组件页面
      }
    },
组件内钩子函数
更细的拦截
组件内放钩子
 beforeRouteEnter(to, from, next) {
    // 在渲染该组件的对应路由被 confirm 前调用
    // 不!能!获取组件实例 `this`
    // 因为当钩子执行前,组件实例还没被创建
    console.log(to.path); // 打印 /helloworld
    console.log(from.path); // 打印 /
    next();  // 跳转到 /helloworld 指定的页面
  },
  beforeRouteUpdate (to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
  },
  beforeRouteLeave (to, from, next) {
    // 导航离开该组件的对应路由时调用
    // 可以访问组件实例 `this`
  }
路由钩子使用场景: 登录态校验 权限校验等
路由滚动行为
mode为history时有效
scrollBehavior (to, from, savedPosition) {
    // return 期望滚动到哪个的位置
  }
//所有路由新页面滚动到顶部:
scrollBehavior (to, from, savedPosition) {
return { x: 0, y: 0 }
} //如果有锚点
scrollBehavior (to, from, savedPosition) {
if (to.hash) {
return {
selector: to.hash
}
}
}
以上滚动目前新版路由已经不支持了
vue-router2的更多相关文章
- 【vue】import的使用
		
以下是vue默认模板结构,自动加载HelloWorld (1)@ 等价于 /src 这个目录,避免写麻烦又易错的相对路径,是在webpack.base.config.js里面配置好别名 (2)impo ...
 - vue.js利用vue.router创建前端路由
		
node.js方式: 利用node.js安装vue-router模块 cnpm install vue-router 安装完成后我们引入这个模板! 下载vue-router利用script引入方式: ...
 - vue 路由demo2
		
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - vue router应用及总结
		
编写一个小的demo,对router基础的应用学习和理解. 效果图示: 说明: 点击About在右边显示相关信息. 说明: 点击Home,在下边显示相关信息,且Home下有两个路由链接,分别对应各自的 ...
 - Vue路由注意事项
		
一.vue中路由的使用 1.定义组件 <template> <div class="hello"> <h1 @click="info&quo ...
 - [转]vue router基本使用
		
第一步:安装 cnpm install vue-router --save 路由配置基本语法 router下index.js引入 import Vue from "vue"; im ...
 - Vue.js 和 MVVM 小细节
		
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...
 - wepack+sass+vue 入门教程(三)
		
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
 - wepack+sass+vue 入门教程(二)
		
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
 - wepack+sass+vue 入门教程(一)
		
一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...
 
随机推荐
- zabbix监控haproxy
			
首先修改haproxy.cfg listen monitor_stat : stats uri /ihaproxy-stats stats realm Haproxy\ Statistics stat ...
 - git 合并多个commit
			
1,查看提交历史,git log 首先你要知道自己想合并的是哪几个提交,可以使用git log命令来查看提交历史,假如最近4条历史如下: commit 3ca6ec340edc66df13423f36 ...
 - Celery + RabbitMq 示意图
			
一直搞不清楚消息队列和任务队列是如何结合的,直到碰到了 :http://www.cnblogs.com/jijizhazha/p/8086119.html 中的图,恍然大悟,凭借自己的理解,画了这幅组 ...
 - python递归、collections系列以及文件操作进阶
			
global log 127.0.0.1 local2 daemon maxconn log 127.0.0.1 local2 info defaults log global mode http t ...
 - @PathVariable 与@RequestParam
			
http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2 你可以把这地址分开理解,其中问号前半部分:http://lo ...
 - (转)NHibernate+MySql常见问题
			
http://blog.51cto.com/4837471/1567675 版本: NHibernate :NHibernate 4.0.1GA MySql:MySql 5.0.1 常见问题一: “N ...
 - python基础学习   Day19   面向对象的三大特性之多态、封装
			
一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...
 - yii gii配置ip限制使用gii
			
<?php $config = [ 'components' => [ 'request' => [ // !!! insert a secret key in the follow ...
 - kubectl windows
			
https://storage.googleapis.com/kubernetes-release/release/v1.10.3/bin/windows/amd64/kubectl.exe
 - CentOS上开启MySQL远程访问权限
			
在CentOS上安装完MySQL后,默认不开始远程访问控制.可以进行如下设定开启. 登录MySQL: mysql -uroot -p 如需修改密码,第一次: mysqladmin -u root pa ...