【问题标题】:如何从 vue 中的多选框中获取多个选项?
【发布时间】:2022-01-22 17:53:59
【问题描述】:

我有很多选择框,它们有很多选项并且是动态的。

<template>
  <div>
    <tr v-for="category in categories.items" :key="category.id">
      <td>
        <select v-model.trim="$v.form.attributeValues.$model" class="form-control">
          <option value=""></option>
          <option v-for="option in category.values" :key="option.id" :value="option">
            {{ option.content }}
          </option>
        </select>
      </td>
    </tr>
  </div>
</template>

<script>
export default {
  data() {
    return {
      categories: null,
      form: {
        productId: this.product.productId,
        attributeValues: [],
      },
    }
  },
}
</script>

我想获取主题的值并将其保存在一个数组中。
但它不起作用,我只能保存 1 个选项。

像这样: (从每个选择框中只获得一个选项)

【问题讨论】:

  • 这里的图片我不太明白。您能否链接一个您看到相同类型输入的网站?

标签: vue.js vuejs2 drop-down-menu nuxt.js


【解决方案1】:

多选远非微不足道的组件。

大多数人只是使用vue-multiselect 或任何package alike
还有一吨可用。您应该寻找与您想要的功能相匹配的那个。

如果您想手动实现它,您将需要处理绑定正确的输入、事件和结构,因为它无法通过简单的v-model 来实现。
这方面最好的文章之一是this one

不过,这完全取决于您希望它的外观、各种选项的行为、选择它的方式(键盘、ctrl + 单击、简单单击等...)、过渡等...

TLDR:使用一个包或自己尝试一下,如果您想进行一些调试,请向我们展示您目前取得的成果。
社区不会为您从头开始编写复杂的组件。

【讨论】:

  • tnx 但我想创建多选我想创建多选框,就像我在我的问题中添加的这张图片
  • @faezeh 不确定什么是“多选框”。
  • 像我现在添加到我的问题中的图片。这意味着不止一个选择框我有许多动态选择框来自服务器
  • @faezeh 告诉我,我不太了解链接的图像。另外,请关注一些(模拟的)静态数据,然后您将了解如何动态处理它。不要急于求成。
【解决方案2】:

只需将v-modelinput-event 添加到您的选项中,如下所示:

模板

<option v-model="selectedItem" @input="checkItem(selectedItem)">
  <!-- Your code -->
</option>

然后转到您的脚本并定义所有内容。之后,您可以创建一个名为 checkItem 的方法,然后您将在 push 定义您选择的 array 中的所有内容。

脚本

data() {
  return {
    selectedItem: null,
    allItems: [],
  }
},

methods: {
  checkItem(selectedItem) {
    this.allItems.push(selectedItem)
  }
}

希望这对您有所帮助 - 请告诉我!

【讨论】:

  • 你如何在你的例子中取消选中?
  • 另外,如果您使用输入事件,再保留v-model 有什么意义?顺便说一句,你确定@input 正在研究一个选项吗,即使是听众 AFAIK,它也不是键盘输入。此外,如果您要举个例子,请在与 an array/object 合作时链接注意事项,因为如果 OP 尝试自制解决方案,她将很快面对这些问题。
  • @BOBBY 我从 eslint 收到了这个错误: 不支持 'v-model' 指令
  • @faezeh 你已经在这里得到了答案。您将需要一些自定义事件,您可以猜到(正如我已经告诉过您的那样),您的示例并非微不足道(因此 v-model 在您的情况下还不够)。
  • @kissu 是的,但 @input 不适用于选项,我想同时获取选择框名称和选项名称
猜你喜欢
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-06
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多