当前位置: 首页 > 知识库问答 >
问题:

javascript - vue3 render+el-select不能回显是什么问题?

田丰
2023-12-26

vue3 render函数方式创建el-select,不能回显是什么问题呢?

const handleRemove = () => {    const options = combination.value.mapList[VariableEnum.variable.toString()] ?? [];    const selected = ref();    const content = h("div", {}, [        h("p", { style: { marginBottom: "12px" } }, "已有变量配置绑定此组合方式,如要删除请选择替换组合方式"),        h(            // ElSelect,            'el-select',            {                // onChange: (val: any) => {                "onUpdate:modelValue": (val: number) => {                    selected.value = val;                    console.log(selected.value);                },                // value: selected.value,                modelValue: selected.value,                style: { width: "100%" },                placeholder: "请选择替换组合方式",            },            [                options.map((item: any) =>                    h(ElOption, {                        key: item.id,                        label: item.title,                        value: item.id,                    })                ),            ]        ),    ]);    ElMessageBox({        title: "警告",        message: () => content,    }).then(() => {        console.log(selected.value);        // 处理删除逻辑    });};

共有3个答案

狄兴邦
2023-12-26

h 函数的第一个参数如果是原生标签的话可以传字符串,如果是 vue 组件的话应该传入组件的定义。

栾和风
2023-12-26

找到原因了,conten不是写的函数,这样定义是一个常量了,肯定不会变化了

盛超
2023-12-26

从你给出的代码片段来看,你正在使用 Vue 3 和 Element UI 的 el-select 组件来创建一个下拉选择框。你提到的问题是 el-select 无法回显(即无法正确显示已选的值)。

以下是我分析的几个可能的问题原因:

  1. 绑定的 modelValue 没有正确更新el-selectmodelValue 属性应该绑定到一个响应式的数据上。在你的代码中,你使用了 ref() 来创建一个响应式引用,并试图将 modelValue 绑定到这个引用的值上。然而,你并没有在任何地方改变这个引用的值,所以 modelValue 不会自动更新。
  2. onUpdate:modelValue 事件处理函数的问题:你在 onUpdate:modelValue 事件处理函数中打印了 selected.value,但是并没有改变它的值。这可能是问题的原因。
  3. 确保 ElOption 组件的 value 属性正确设置:每个 ElOption 组件的 value 属性应该设置为与 el-selectmodelValue 相匹配的值。在你的代码中,每个 ElOptionvalue 属性设置为 item.id,你需要确保这是正确的。

为了解决这个问题,你可以尝试以下修改:

  • 在选择一个选项后,更新 selected.value 的值。
  • 确保每个 ElOptionvalue 属性设置为与 selected.value 相匹配的值。

下面是一个修改后的代码示例:

const handleRemove = () => {  const options = combination.value.mapList[VariableEnum.variable.toString()] ?? [];  const selected = ref(null); // Initialize to null  const handleSelectChange = (val: number) => {    selected.value = val;    console.log(selected.value);  };  const content = h("div", {}, [    h("p", { style: { marginBottom: "12px" } }, "已有变量配置绑定此组合方式,如要删除请选择替换组合方式"),    h(      'el-select',      {        "onUpdate:modelValue": handleSelectChange,        modelValue: selected.value,        style: { width: "100%" },        placeholder: "请选择替换组合方式",      },      [        options.map((item: any) =>          h(ElOption, {            key: item.id,            label: item.title,            value: item.id,          })        ),      ]    ),  ]);  ElMessageBox({    title: "警告",    message: () => content,  }).then(() => {    console.log(selected.value); // Now this should print the selected value    // 处理删除逻辑  });};

这段代码将在用户选择一个选项后更新 selected.value,这样就能正确回显已选的值了。

 类似资料:
  • 在el-pagination分页组件中,Size子组件渲染函数中使用了el-select,该select中使用了on-input这一属性,但是el-select源码中并没有看到on-input这一prop,请问on-input是什么? el-pagination中的el-select https://github.com/ElemeFE/element/blob/dev/packages/pagi

  • 如下代码我在el-table里面嵌套了一个select: 我们的要求是选择了“是”后,点击保存,刷新表格数据后选择了“是”的,要禁用select,和提交按钮。 我是怎么做的呢,首次进入页面根据后端接口返回的数据控制禁用:disabled="row.is_finished == 2"; 提交数据的时候需要获取选项的这个值,于是select使用change事件,但是,我选择后就直接改掉了行row.is

  • 数据是通过懒加载获取的,default-expanded-keys属性值需要从顶层根节点到当前选中节点的key路径,现在回显的时候只能得到当前选中节点的key,这样该如何回显呢? 想要的效果是:编辑回显时,展开树形控件选中的节点是默认选中的状态

  • 问题内容: 什么是JavaScript垃圾回收?为了编写更好的代码,对于Web程序员来说,了解JavaScript垃圾回收有什么重要意义? 问题答案: 从该页面引用: JScript使用了非世代的标记清除垃圾收集器。它是这样的: 每个“范围内”的变量都称为“清除剂”。清道夫可以指数字,对象,字符串等。我们维护一个清道夫列表- 变量进入作用域时将移入scav列表,超出范围时将其移出scav列表。 垃

  • 问题内容: 在此页面中,我找到了新的JavaScript函数类型: 我已经知道了什么,以及做的,但不知道什么是注定的。它是什么? 问题答案: 这是一个生成器功能。 生成器是可以退出并稍后重新输入的函数。它们的上下文(变量绑定)将在重新进入时保存。 调用生成器函数不会立即执行其主体。而是返回该函数的迭代器对象。调用迭代器的方法时,将执行生成器函数的主体,直到第一个表达式指定要从迭代器返回的值,或者使