formCreate多选下拉问题?

使用formCreat下拉框组件multiple多选不生效

  return {
        type: "select",
        field: "parentId",
        value: '',
        title: t('form.parentControl'),
        // link: ['isTop'],
        props: {
            placeholder: '控件ID/控件名称',
        },
        update(e, rule, fApi) {
            formData.resetId()
            const targetRule = fApi.getRule('parentValue');
            if (targetRule) {
                targetRule.hidden = !e; // 直接根据 e 的存在与否设置 hidden 属性
            }
            if (e) {
                if (targetRule) {
                    targetRule.hidden = false;
                    targetRule.value = []
                }
                const option = formData.getFormData()
                const setFormData = (item, e) => {
                    formData.setId(e);
                    formData.setOptions(item.options);
                };
                option.find((item) => {
                    const targetField = item.children ? item.children[0].field : item.field;
                    const targetOptions = item.children ? item.children[0].options : item.options;
                    if (e === targetField) {
                        setFormData({ options: targetOptions }, e);
                        if (targetRule) {
                            targetRule.options = targetOptions
                        }
                        return true; // 找到匹配项,停止查找
                    }
                    return false;
                });
            }
        }
        // options: data
    }

我在formCreate文档中看到在props中直接添加multiple:true就可以 但是我添加后一直不生效。

阅读 828
avatarAI BotBETA
在 `formCreate` 中,如果你希望下拉框组件支持多选,确实需要在 `props` 中添加 `multiple: true`。根据你提供的代码片段,你可能遗漏了这一步或者添加的方式不正确。以下是正确的配置方式:

你的原始代码中没有显示添加 `multiple: true` 到 `props` 中。确保你的配置如下修改:

return {

type: "select",
field: "parentId",
value: '',
title: t('form.parentControl'),
props: {
    placeholder: '控件ID/控件名称',
    multiple: true  // 添加这一行以启用多选
},
update(e, rule, fApi) {
    formData.resetId()
    const targetRule = fApi.getRule('parentValue');
    if (targetRule) {
        targetRule.hidden = !e; // 直接根据 e 的存在与否设置 hidden 属性
    }
    if (e) {
        if (targetRule) {
            targetRule.hidden = false;
            targetRule.value = []
        }
        const option = formData.getFormData()
        const setFormData = (item, e) => {
            formData.setId(e);
            formData.setOptions(item.options);
        };
        option.find((item) => {
            const targetField = item.children ? item.children[0].field : item.field;
            const targetOptions = item.children ? item.children[0].options : item.options;
            if (e === targetField) {
                setFormData({ options: targetOptions }, e);
                if (targetRule) {
                    targetRule.options = targetOptions
                }
                return true; // 找到匹配项,停止查找
            }
            return false;
        });
    }
}
// options: data 可以在其他地方定义

}


确保 `multiple: true` 已经被正确添加到 `props` 对象中。此外,检查其他可能影响下拉框行为的配置,比如 `options` 是否正确设置,以及是否有其他代码逻辑覆盖了 `multiple` 属性。如果问题仍然存在,建议检查 `formCreate` 的版本和文档,确保没有遗漏任何重要的更新或配置说明。
1 个回答

我写个例子给你参考一下

import Vue from 'vue';
import formCreate, { maker } from '@form-create/element-ui';

const rule = [
    maker.select('产品分类', 'categories', ['104', '105'])
        .options([
            { value: '104', label: '生态蔬菜' },
            { value: '105', label: '新鲜水果' },
            { value: '106', label: '有机食品' }
        ])
        .props({ multiple: true })
];

const option = {
    submitBtn: true,
    resetBtn: true,
    onSubmit: function (formData) {
        console.log('提交的表单数据:', formData);
    }
};

new Vue({
    el: '#app',
    data() {
        return {
            formData: {}
        };
    },
    mounted() {
        this.$formCreate.create(rule, option).mount('#form');
    }
});
推荐问题
宣传栏