vue ui之 iview 事件拦截
用过easyui的,应该清楚easyui组件有很多before事件拦截,有时候会特别重要。
最近在研究vue的ui组件iview虽然功能也不错,感觉还是没有像easyui那样强大,就比如before事件拦截。
不过也想到了解决方案: props传入函数参数,这里以Switch组件为例(颜色标识的为额外添加的代码)
<template>
<span :class="wrapClasses" @click="toggle">
<span :class="innerClasses">
<slot name="open" v-if="currentValue"></slot>
<slot name="close" v-if="!currentValue"></slot>
</span>
</span>
</template>
<script>
import { oneOf } from '../../utils/assist';
import Emitter from '../../mixins/emitter'; const prefixCls = 'ivu-switch'; export default {
name: 'Switch',
mixins: [ Emitter ],
props: {
value: {
type: Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
},
size: {
validator (value) {
return oneOf(value, ['large', 'small']);
}
},
beforeChange: {
type: Function
}
},
data () {
return {
currentValue: this.value
};
},
computed: {
wrapClasses () {
return [
`${prefixCls}`,
{
[`${prefixCls}-checked`]: this.currentValue,
[`${prefixCls}-disabled`]: this.disabled,
[`${prefixCls}-${this.size}`]: !!this.size
}
];
},
innerClasses () {
return `${prefixCls}-inner`;
}
},
methods: {
toggle () {
if (this.disabled) {
return false;
}
if(this.beforeChange && (typeof this.beforeChange=='function')) {
var status = this.beforeChange.apply(this,[this.currentValue]);
if(status == false) return false;
}
const checked = !this.currentValue;
this.currentValue = checked;
this.$emit('input', checked);
this.$emit('on-change', checked);
this.dispatch('FormItem', 'on-form-change', checked);
}
},
watch: {
value (val) {
this.currentValue = val;
}
}
};
</script>
vue ui之 iview 事件拦截的更多相关文章
- vue UI库iview源码解析(2)
上篇问题 在上篇<iview源码解析(1)>中的index.js 入口文件的源码中有一段代码有点疑惑: /** * 在浏览器环境下默认加载组件 */ // auto install if ...
- 基于 Vue.js 之 iView UI 框架非工程化实践记要
像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引用一下,不需要就删除.故观念使然,尽管 Nuget 和 Maven ...
- ElementUI(vue UI库)、iView(vue UI库)、ant design(react UI库)中组件的区别
ElementUI(vue UI库).iView(vue UI库).ant design(react UI库)中组件的区别: 事项 ElementUI iView ant design 全局加载进度条 ...
- 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何
基于 Vue.js 之 iView UI 框架非工程化实践记要 像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引 ...
- Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例
Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 ...
- 讲讲Android事件拦截机制
简介 什么是触摸事件?顾名思义,触摸事件就是捕获触摸屏幕后产生的事件.当点击一个按钮时,通常会产生两个或者三个事件--按钮按下,这是事件一,如果滑动几下,这是事件二,当手抬起,这是事件三.所以在And ...
- Android 事件拦截机制一种粗鄙的解释
对于Android事件拦截机制,相信对于大多数Android初学者是一个抓耳挠腮难于理解的问题.其实理解这个问题并不困难. 首先,你的明白事件拦截机制到底是怎么一回事?这里说的事件拦截机制,指的是对触 ...
- Unity3D研究院编辑器之Editor的GUI的事件拦截
OnGUI是Unity上一个时代的UI系统,而现在运行时的UI系统已经被UGUI取代,但是Editor的UI还是在用老的这一套GUI系统.比如unity编辑器里的所有窗口,布局,按钮,拖动条.滚动等等 ...
- Vue UI:Vue开发者必不可少的工具
译者按: Vue开发工具越来越好用了! 原文: Vue UI: A First Look 译者: Fundebug 本文采用意译,版权归原作者所有 随着最新的稳定版本Vue CLI 3即将发布,是时候 ...
随机推荐
- CGLIB代理基础
本文意在讲解CGLIB的基础使用及基本原理. 一.CGLIB的基本原理: 依赖ASM字节码工具,通过动态生成实现接口或继承类的类字节码,实现动态代理. 针对接口,生成实现接口的类,即implement ...
- metasploit framework(十四):弱点扫描
vnc 密码破解 vnc 端口5900 先开启数据库 启动msf vnc无密码访问 RDP远程桌面漏洞 win7 192.168.1.123 xp 192.168.1.122 发现有两个模块, ...
- python 取当前日期
import time time.strftime('%Y-%m-%d',time.localtime(time.time()))
- 整理一些好用的css, javascript资源网站等
CSS: CSS3信息:http://www.css3.info/ css3生成器:http://css3generator.com/ css3 cross brower生成器:http://css3 ...
- 织梦 百度sitemap制作教程
一.新建一个sitemap.htm模板 登录dedecms后台,选择[模板]-[模板管理]-[默认模板管理] 点击最下面的[新建模板]新建一个模板,并复制下面这段代码进去(将代码中的域名改为自己的): ...
- Java字符串String详解
1.String字符串 实例化String对象: (1)直接赋值,如:String str="hello"; (2)使用关键字 new,如:String str=new Strin ...
- angular小技巧随笔
1. 重新刷新页面 同页面切换状态: $state.go('tab.index', {inviteId:inviteId}); self.location.reload();
- “东信杯”广西大学第一届程序设计竞赛(同步赛)H
链接:https://ac.nowcoder.com/acm/contest/283/H来源:牛客网 题目描述 由于临近广西大学建校90周年校庆,西大开始了喜闻乐见的校园修缮工程! 然后问题出现了,西 ...
- python 中 类型转换 bytes
https://www.cnblogs.com/sesshoumaru/p/5980090.html
- freetype教程网址
http://freetype.sourceforge.net/freetype2/docs/reference/ft2-system_interface.html#FT_Stream ht ...