You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Semantic UI多选下拉框自定义值删除时V-model不更新求助

解决Vue + Semantic UI多选下拉框自定义值删除时v-model不更新的问题

嘿,这个问题我之前也碰到过!原因其实很简单:Semantic UI的下拉组件是靠jQuery直接操作DOM实现的,而Vue的v-model是通过监听原生表单元素的change事件来同步数据的。当你删除自定义添加的选项时,Semantic UI并没有触发原生<select>的change事件,所以Vue完全不知道数据已经发生变化,自然不会更新lists数组。

下面是具体的解决方案,只需要修改你的JavaScript代码即可:

new Vue({
  el: "#app",
  data: {
    lists: []
  },
  mounted() {
    // 保存Vue实例的引用,避免回调里this指向改变
    const vm = this;
    $('.ui.dropdown').dropdown({
      allowAdditions: true,
      // 利用Semantic UI提供的onRemove回调手动同步数据
      onRemove: function(value) {
        // 过滤数组,移除被删除的项
        vm.lists = vm.lists.filter(item => item !== value);
      }
    });
  }
});

为什么这样能解决问题?

Semantic UI的dropdown组件提供了onRemove钩子,不管你删除的是原生选项还是自定义添加的选项,这个回调都会被触发。我们在这个回调里手动修改Vue的lists数组,就能让Vue实时感知到数据变化,页面上的Selected values也会同步更新了。

另外还要注意:把dropdown的初始化代码放在Vue的mounted钩子中,确保Vue已经渲染完DOM,这样jQuery才能正确选中.ui.dropdown元素。

你可以试试这个修改后的代码,删除自定义项'Abcd'的时候,lists数组会立刻同步移除它,不需要等到操作原生选项才更新~

内容的提问来源于stack exchange,提问作者Pranav Kaistha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:22:26