如何解决无法使用无渲染组件实现vuelidate-vue js
我想用vuejs创建一个不渲染的表单-我正在使用vuelidate进行表单验证。该表单使用范围限定的插槽来管理模型和控件。
不幸的是,我无法通过无渲染方法来实现对表单验证的验证。任何想法将不胜感激。 下面是我尝试过的。
App.vue
<renderless-form>
<form @submit.prevent="submit" slot-scope="{ ele,submit }">
<input type="email" v-model="ele.model.name" />
<button> Submit </button>
</form>
</renderless-form>
<script>
import renderlessFrom from "./components/renderless-form.vue";
export default {
name: "App",components: {
"renderless-form": renderlessFrom
}
};
</script>
renderless-form.vue
import { required,minLength,between } from "vuelidate/lib/validators";
export default {
data() {
return {
model: {
name: ''
}
};
},validation: model,//i am sceptical here how to put validation
methods: {
async submit() {
console.log(this.model)
},},render() {
return this.$scopedSlots.default({
// Data
ele: this.model,// Methods
submit: this.submit,});
},};
解决方法
也许本文可以回答您的问题 https://medium.com/@crishellco/vuelidate-displaying-errors-simplified-156147b123d6
这建议您将输入包装在FormGroup组件中,该组件将显示作用域内的插槽值“无效”和“错误”。
演示:
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
https://codesandbox.io/s/vue-template-forked-w86yq?file=/src/components/Form.vue
, renderlessForm
缺少validation
定义,并且el.model
引用不存在。
查看有效的fiddle
父母标记:
<div id="app">
<renderless-form>
<form @submit.prevent="submit" slot-scope="{ model,submit,validations }">
<input type="email" v-model="model.name" />
<button> Submit </button>
<pre>{{ validations.model }}</pre>
</form>
</renderless-form>
</div>
非渲染表单组件:
Vue.component('renderless-form',{
render: function(createElement) {
return this.$scopedSlots.default({
model: this.model,submit: this.submit,validations: this.$v
});
},data: function() {
return {
model: {
name: ''
}
};
},validations: {
model: {
name: {
required,minLength: minLength(5)
}
}
},methods: {
submit: function() {
console.log("submit",this.model);
}
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。