使用vue的mixins混入实现对正在编辑的页面离开时提示
mixins.ts
import { Vue, Component, Watch } from "vue-property-decorator"
Component.registerHooks([
'beforeRouteLeave'
])
@Component
/* 此mixin用来页面离开时编辑提示,
如果组件引入该mixin,那么默认:url改变或者刷新关闭时会给出提示;
如果引入的组件更改url时不需要提示(比如点击保存按钮时),那么需要将showLeaveHint手动置为false */
export class LeaveHintMixin extends Vue {
showLeaveHint: boolean = true;
hintMessage: string = '页面中有正在编辑的内容,继续将不会保存'; /* ---- 函数 ---- */
showLeaveHintFun(next) {
if (window.confirm(this.hintMessage)) {
next();
} else {
next(false);
}
} /* 绑定与解绑浏览器刷新关闭事件 */
bindBeforeunload() {
// 点击刷新、关闭按钮,直接通过浏览器给出提示
window.onbeforeunload = (event) => {
event.returnValue = this.hintMessage;
return this.hintMessage;
};
}
unbindBeforeunload() {
window.onbeforeunload = null;
} /* ---- 生命周期 ---- */
// 改变url时,给出提示
beforeRouteLeave(to, from, next) {
if (this.showLeaveHint) {
this.showLeaveHintFun(next);
} else {
next();
}
}
// 组件渲染完绑定浏览器刷新关闭事件
mounted() {
if (this.showLeaveHint) {
this.bindBeforeunload();
}
}
// 组件摧毁时解绑事件
beforeDestroy() {
this.unbindBeforeunload();
} // 添加监控使得组件能够更加灵活控制编辑提示,组件改变showLeaveHint时,便可以绑定或者解绑事件控制提示
@Watch('showLeaveHint')
bindClick(val) {
if (val) {
this.bindBeforeunload();
} else {
this.unbindBeforeunload();
}
}
}
使用方法 use.ts
import { Vue, Watch, Component } from 'vue-property-decorator'
import { mixins } from 'vue-class-component'
import { LeaveHintMixin } from '../../common/mixins' @Component export default class Use extends mixins(LeaveHintMixin) {
//引入mixins.ts默认更改url、刷新、关闭时会给出提示 showLeaveHint = false; // 这样会覆盖mixins.ts中的showLeaveHint,会改为默认没提示,跟不引入一样 //后面通过改变this.showLeaveHint 可以控制更改url、刷新、关闭时是否给出提示
}
使用vue的mixins混入实现对正在编辑的页面离开时提示的更多相关文章
- Vue.js Mixins 混入使用
Mixins一般有两种用途: 1.在你已经写好了构造器后,需要增加方法或者临时的活动时使用的方法,这时用混入会减少源代码的污染. 2.很多地方都会用到的公用方法,用混入的方法可以减少代码量,实现代码重 ...
- Vue mixins(混入)
建立一个公共组件,然后对该组件进行混入继承. 注意会走两个生命周期,谨慎使用 mixins混入,相当于生成new 组件:组件引用,相当与在父组件内开辟了一块单独的空间 mixins适用于,两个有非常相 ...
- _ 下划线 vue mixins 混入 变量前有下划线 变量不起作用
_ 下划线 vue mixins 混入 变量前有下划线 变量不起作用
- Vue混合mixins
前面的话 本文将详细介绍Vue混合mixins 概述 混合 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式.混合对象可以包含任意组件选项.以组件使用混合对象时,所有混合对象的选 ...
- Mixins 混入选项操作
Mixins一般有两种用途: 1.在你已经写好了构造器后,需要增加方法或者临时的活动时使用的方法,这时用混入会减少源代码的污染. 2.很多地方都会用到的公用方法,用混入的方法可以减少代码量,实现代码重 ...
- vue中mixins的理解及应用
vue中mixins的理解及应用 vue中提供了一种混合机制--mixins,用来更高效的实现组件内容的复用.最开始我一度认为这个和组件好像没啥区别..后来发现错了.下面我们来看看mixins和普通情 ...
- vue中mixins的使用方法和注意点(详)
mixins基础概况 vue中的解释是这样的,如果觉得语言枯燥的可以自行跳过嘿~ 混入 (mixins): 是一种分发 Vue 组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项.当组件使 ...
- Vue中mixins、extends、extend和components的作用和区别
关于mixins:官方文档: https://cn.vuejs.org/v2/guide/mixins.html 一.components Vue.component是用来注册或获取全局组件的方法,其 ...
- mixins混入
mixins混入:定义类,多重继承 使用方法见附件: mixins混入.zip
随机推荐
- [Golang学习笔记] 05 程序实体2 作用域访问权限和变量重声明
作用域访问权限: 程序实体访问权限(作用域)有三种:1. 包级私有(代码包)2. 模块级私有(代码包)3. 公开(全域). 一个函数是一个代码块.一个程序实体的作用域总是会被限制在某个代码块中.好处: ...
- Java使用POI导出excel(上)——基本操作
相关的介绍参考自:http://zc985552943.iteye.com/blog/1491546 一.概述 1.概念 受上文博文博主的启发,有必要先对excel的各个概念先做了解! //上述基本都 ...
- 20155206 2016-2017-2 《Java程序设计》第4周学习总结
20155206 2006-2007-2 <Java程序设计>第4周学习总结 教材学习内容总结 继承: 避免多个类间重复定义共同行为,在编写程序的过程中可能会出现部分代码重复的现象,把重复 ...
- 20155233 2006-2007-2 《Java程序设计》第4周学习总结
20155233 2006-2007-2 <Java程序设计>第4周学习总结 教材学习内容总结 第六章: 继承:子类继承父类,避免重复的行为定义. extends关键词:继承并扩充行为. ...
- 20155313 2016-2017-2《Java程序设计》课程总结
20155313 2016-2017-2<Java程序设计>课程总结 目录 一.每周作业链接汇总 二.实验报告链接汇总 三.代码托管链接 四.课堂项目实践 五.课程收获与不足 六.问卷调查 ...
- spark读取mongodb数据写入hive表中
一 环境: spark-: hive-; scala-; hadoop--cdh-; jdk-1.8; mongodb-2.4.10; 二.数据情况: MongoDB数据格式{ "_i ...
- DSP6748学习笔记-190116
1. PSC是什么?电源和睡眠控制器.一个PSC模块由一个全局PSC和一组本地PSC组成,那么又是什么? PSCModuleControl(SOC_PSC_0_REGS, , PSC_POWERDOM ...
- PowerDesigner 15学习笔记:十大模型及五大分类
个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...
- Mybatis JPA-集成方案+源码
2018-04-18 update 当前文章已过时,请访问代码仓库查看当前版本wiki. github https://github.com/cnsvili/mybatis-jpa gitee htt ...
- Jmeter接口测试(四)传递参数
参数设置 Jmeter 支持通过 查询字符串参数(Query String Parameters) 或者 Request body 请求体来传递参数. 1.get请求是普通键值对 get请求一般通过p ...