浅谈vux之x-input使用以及源码解读

2020-06-14 06:22:15易采站长站整理

前言

近期项目中使用的vux中的input,以及使用自定义校验规则和动态匹配错误提示,有时间记录下自己的使用经历和源码分析。希望大家多多指正,留言区发表自己宝贵的建议。 详解 列举官方文档中常用的几个属性的使用方法,代码如下


<group ref="group">
<x-input v-model="name"
class="vux-input__name"
title="名字"
placeholder="tell me your name"
required
:is-type="checkNameValid"
@on-change="onValueChange">
<div slot="label"
class="name__icon">
<icon type="success"></icon>
</div>
</x-input>
</group>

官方文档有详细的解释,

required
属性表示此选项为必填,
is-type
可以绑定一个函数,作为校验,这个函数得返回一个对象。格式如下


checkValid(name) {
return {
valid: name === '三只萌新',
msg: '你不是萌新'
}
}

valid可以设置为你的校验规则,需要返回一个布尔值,msg是错误的提示信息。

vux本身写好几种校验方式,如果使用 email,china-name,china-mobile 这几种方式直接绑定字符串即可。

solt插槽如slot=”label”用于自定义title,源码如下


<slot name="label">
<label class="weui-label"
:class="labelClass"
:style="{width: labelWidth || $parent.labelWidth || labelWidthComputed, textAlign: $parent.labelAlign, marginRight: $parent.labelMarginRight}"
v-if="title"
v-html="title"
:for="`vux-x-input-${uuid}`"></label>
<inline-desc v-if="inlineDesc">{{ inlineDesc }}</inline-desc>
</slot>

分析:class=”labelClass”动态绑定样式以对象的形式返回一个{[className]:Boolean}的格式的对象


labelClass() {
return {
'vux-cell-justify':
this.$parent.labelAlign === 'justify' ||
this.$parent.$parent.labelAlign === 'justify'
}
}

 

同样的方式查看他父级是否有labelAlign属性,vux-cell-justify类名对应的样式没有应用。

使用场景

场景1

假设在一个提交页面,当我们提交时判断输入框中的值是否是符合我们的要求,如果不符合,给出错误提示,如果符合提交后将输入框中的数据清空。

需求:

如果还有停留在本页面我们需要将上一次的数据全部清空

问题: