在element-ui的代码中有
export default {
data() {
var validateUser = (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入用户名'));
} else {
if (this.ruleForm.user !== '') {
this.$refs.ruleForm.validateField('pass');
}
callback();
}
};
var validatePass = (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入密码'));
}
else {
if(this.ruleForm.pass !==''){
this.$refs.ruleForm.validateField('pass1')
}
callback();
}
};
}
return {
ruleForm: {
user: '',
pass: '',
},
rules: {
user: [
{validator: validateUser, trigger: 'blur'}
],
pass: [
{validator: validatePass, trigger: 'blur'}
],
},
dialogVisible:false
};
},
element-ui也不提供个源码。所以想问
- 上面的(rule,value,callback)三个参数都什么意思?,从哪来的啊(+_+)?
- validateField()里面的参数需要填什么?
- ruleForm{}里面的属性名必须要和rule{}里面的属性名一样么?
好吧,其实我就是想知道validate()的内部作用过程是怎么样的?
这里的只是指回调函数啊。
element-ui
对验证结果的当做参数传入验证函数中。比如:
-------分割线--------
看你修改了问题,我也修改下回答吧。
1、你输出下这三个参数就大概知道是什么意思啊。
(rule,value,callback)
第一个应该是规则,第二个是输入框的值。第三个是回调函数。
2、
validateField
其实文档已经对其做了解释。对部分表单字段进行校验的方法3、ruleForm{}里面的属性名是需要和rule{}里面的属性名保持一致的。不然不知道对谁验证啊。
你要看源码,其实可以去
github
看的。element-ui
的表单验证应用了策略模式(设计模式)。关于策略模式,推荐@微醺岁月 的文章:探索两种优雅的表单验证——策略设计模式和ES6的Proxy代理模式,或者曾探的书籍《JavaScript设计模式与开发实践》第5章策略模式。
关于源码,可以克隆相对应的
1.x
分支(猜你应该用的是1.x
)下来,自己研究。可以从Element-ui源码:传入的参数rules为对象看起另外 推荐一个
chrome
插件octotree,树形结构方便查看github
项目。可以不翻墙,下载dist/chrome.crx
安装即可。希望对你有所帮助。