前言
近期项目中使用的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
假设在一个提交页面,当我们提交时判断输入框中的值是否是符合我们的要求,如果不符合,给出错误提示,如果符合提交后将输入框中的数据清空。
需求:
如果还有停留在本页面我们需要将上一次的数据全部清空
问题:










