Skip to content

Instantly share code, notes, and snippets.

@nomyfan
Created August 3, 2020 13:52
Show Gist options
  • Save nomyfan/049ce9ee20c8fac026629c794f0ba41a to your computer and use it in GitHub Desktop.
Save nomyfan/049ce9ee20c8fac026629c794f0ba41a to your computer and use it in GitHub Desktop.
Combine async_validator with @hapi/joi
<el-form :model="formModel" :rules="rules" ref="form">
<el-form-item label="活动名" prop="activity_title">
<el-input v-model="formModel.activity_title" />
</el-form-item>
</el-form>
import Joi from "@hapi/joi";
import { validator } from "./validator.js";
export default {
name: "Demo",
data() {
return {
formModel: {
activity_title: ""
},
rules: {
activity_title: [validator(Joi.string(), "请填写活动名")]
}
}
},
methods: {
submmit() {
this.$refs.form.validate((valid) => {
if(valid) {
// ... do what you want
} else {
this.$message.warning("请检查表格")
}
})
}
}
}
function joi2ele(scheme, msg) {
scheme = scheme.error(new Error(msg));
return (_, value, callback) => {
callback(scheme.validate(value, { allowUnknown: true }).error);
};
}
function validator(scheme, msg, options = { required: true, trigger: "blur" }) {
return {
...options,
validator: joi2ele(scheme, msg)
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment