vue.js - 使用模式使 vue-form-generator 部分可折叠
问题描述
我正在使用vue-form-generator库来创建表单。
问题是我的表单上有 116 个问题,我想折叠一些问题,使表单更易于用户管理。
我的表格有五个部分。因此,我表单中的每个问题都具有section
架构中的属性。但是,该section
部分不是label
您可以修改的表单域。这些部分会自动生成为您的标题。
除了创建自定义表单字段之外,有没有办法让这些部分可以折叠?
我正在考虑尝试的一种方法是将我的表单分成五个表单,这将允许我在每个表单周围放置一个 vue-bootstrap 折叠元素。就像是:
<b-collapse id="collapse1" class="mt-2">
<vue-form-generator :schema="survey.schema" :options="survey.formOptions" :model="survey.model"></vue-form-generator>
</b-collapse>
但这又会使提交表单变得更加困难,因为我必须拼接所有五个表单的结果。
这个问题有没有更简单的解决方案?
解决方案
我最近遇到了同样的问题,这是我找到解决它的唯一方法。
在模式对象.collapse
中向组中添加一个类,如下所示:
const schema = {
groups: [
{
styleClasses: 'collapse',
legend: 'Group title',
fields: [ ...
在父组件上添加一个collapse
方法并将一个onclick
事件附加到fieldset
's legend
,您可以在 vuemounted
生命周期钩子中访问表单,如下所示:
...
methods: {
collapse(e) {
const group = e.target.parentElement;
group.classList.toggle("hide");
}
},
mounted() {
const collapsableLegends = this.$el.querySelectorAll('.vue-form-generator .collapse legend');
collapsableLegends.forEach(legend => legend.onclick = this.collapse);
}
...
最后.hide
在你的 CSS 中添加一个类:
.vue-form-generator .collapse.hide .form-group { display: none }
这有点hacky,但它完成了工作。
推荐阅读
- git - GIT - 进行更改后合并问题
- javascript - 是否可以在 Nodejs 中设置参数之前调用函数?
- sql - 如何将复杂查询解析为 SQL?
- python - 未使用用户名和密码连接到 Socks5
- java - SQL 语法错误:“com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的 SQL 语法有错误;”
- rest - Azure B2C - 使用 OAuth2 持有者令牌的 REST 调用可防止后续登录
- sql-server - 查询在 SSMS 中有效,但在 VS/SSRS 中出错
- amazon-web-services - Lex 中静态卡片/按钮标题的字符限制
- angular - 如何将值转换为日期格式,如 yyyy-mm-dd - angular
- gcc - GCC 版本 10.1.0 在 LFS“非法指令内部编译器错误”中编译 BUILT IN 函数调用失败