内容简介:虽然ElementUI文档已经十分详细,但是难免会有一点点遗漏的地方。本文介绍了笔者使用Element的经验以及文档中忽略或简要介绍的内容(笔者想了好久,就写了一点点)。如果你有什么需要补充的,不妨评论区告诉我吧。建议每一个使用 ElementUI 的人都取读一读,官方也很无奈啊。有些可能是被问烦了,有些还是真的挺有用的eg: 给组件绑定的事件为什么无法触发?
虽然ElementUI文档已经十分详细,但是难免会有一点点遗漏的地方。本文介绍了笔者使用Element的经验以及文档中忽略或简要介绍的内容(笔者想了好久,就写了一点点)。如果你有什么需要补充的,不妨评论区告诉我吧。
官方 FAQ
建议每一个使用 ElementUI 的人都取读一读,官方也很无奈啊。有些可能是被问烦了,有些还是真的挺有用的
eg: 给组件绑定的事件为什么无法触发?
在 Vue 2.0 中,为自定义组件绑定原生事件必须使用 .native 修饰符: <my-component @click.native="handleClick">Click Me</my-component>
从易用性的角度出发,我们对 Button 组件进行了处理,使它可以监听 click 事件: <el-button @click="handleButtonClick">Click Me</el-button>
但是对于其他组件,还是需要添加 .native 修饰符。
Input 实时响应用户的输入
<el-input type="text" v-model="test" @change="change"></el-input> 复制代码
使用 change 监听时,input 框的值改变不能触发 change 事件,但是这时如果是 input 输入框失焦确能触发事件。总的来说就是 change 事件只在 input 值改变并且失去焦点的时候才会触发,其它情况不触发事件
change 事件现在仅在输入框失去焦点或用户按下回车时触发,与原生 input 元素一致。如果需要实时响应用户的输入,可以使用 input 事件。
详见其 更新说明
Input 使用 v-model使用修饰符
如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符:
<el-input v-model.trim="input" placeholder="请输入内容"></el-input>
想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符:
<el-input type="number" v-model.number="numberValidateForm.age" autocomplete="off"></el-input>
表单验证
ElementUI 表单验证使用 async-validator ,表单元素的 type 有 string,number,boolean,method,regexp,integer,float,array,object,enum,date,url,hex,email
有些还是很常用的,比如 url 验证,date 验证,email 验证。但是文档里面没有写,我有时候会记不住。哈哈哈。所以我写了一个表单代码生成器,这样就不用去记住了。
select 远程搜索组件回显
element-ui 当你的选项是固定的时候,它会基于你选中的 value,回显对应的 label,但是远程搜索组件由于 options
不固定,回显就是一个问题。
解决的方法就是传入已选中的值的 options
传入,比如我有一个组件 ArticleSelect
,我选中的 id 值为 [ 1,2 ] ,如果不做处理的话,这个组件就不会回显。仅干巴巴的显示 1,2 两个 tag。但是我可以通过把选中的值的 options
(值为 [{value:1,label:'第一篇'},{value:2,label:'第二篇'}]
) 传入这个组件,实现回显显示标题。
但,可能有人就问了,select 组件远程搜索 options 不是会随着搜索的关键词而动态变化么,为什么这样可以?我们看一下 ElementUI select 组件设置选中值的代码:
setSelected() { // 省略不是多选的情况的代码 // 多选 let result = []; if (Array.isArray(this.value)) { this.value.forEach(value => { // 注意到这里是push操作 result.push(this.getOption(value)); }); } this.selected = result; // 设置完成之后重新计算选项框的高度 this.$nextTick(() => { this.resetInputHeight(); }); } 复制代码
由代码可知, Element 设置 选中的值是一个 push 操作,所以 options 后续改变也不会影响我选中的值,完美解决了我的需求
自定义 element-ui 样式
这一节我是从这里抄来的,就不自己写了
CSS 命名空间
现在我们来说说怎么覆盖 element-ui 样式。由于 element-ui 的样式我们是在全局引入的,所以你想在某个页面里面覆盖它的样式就不能加 scoped,但你又想只覆盖这个页面的 element 样式,你就可在它的父级加一个 class,用命名空间来解决问题。
.article-page { /* 你的命名空间 */ .el-tag { /* element-ui 元素*/ margin-right: 0px; } } 复制代码
当然也可以使用深度作用选择器 下文会介绍
父组件改变子组件样式深度选择器
当你子组件使用了 scoped 但在父组件又想修改子组件的样式可以,通过 >>> 来实现:
<style scoped> .a >>> .b { /* ... */ } </style> 复制代码
将会编译成
.a[data-v-f3f3eg9] .b { /* ... */ } 复制代码
如果你使用了一些预处理的东西,如 sass 你可以通过 /deep/ 来代替 >>> 实现想要的效果。
所以你想覆盖某个特定页面 element 的 button 的样式,你可以这样做:
.xxx-container >>> .el-button{ xxxx } 复制代码
终极技巧
如果有时候你不幸遇到了 ElementUI 的 bug(虽然大部分情况是你自己的问题),给组件添加 key,更新 key 值,强制更新组件,一般可以解决问题。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Algorithms on Strings, Trees and Sequences
Dan Gusfield / Cambridge University Press / 1997-5-28 / USD 99.99
String algorithms are a traditional area of study in computer science. In recent years their importance has grown dramatically with the huge increase of electronically stored text and of molecular seq......一起来看看 《Algorithms on Strings, Trees and Sequences》 这本书的介绍吧!