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

vue.js - el-select在同时使用allow-create和remote-method时,复制一个值到select输入框中,列表中为什么会同时出现两个一模一样的值?

朱修真
2023-11-03
    <el-select      v-model="addTraceForm.advisor"      clearable      @change="advisorChange"      maxlength="250"      filterable      allow-create      remote      :remote-method="(qs:any)=>{return remoteMethod(qs)}"    >      <el-option        v-for="item in advisor_list"        :key="item.advisor"        :label="item.advisor"        :value="item.advisor"      />    </el-select>

上述代码,复制一个值到select输入框中,然后在remoteMethod,模糊搜索到该数据,为什么allow-create创建的数据没有被清除掉,导致列表中出现两条一模一样的数据97127e2d0d7e98e77a668dcb543bf77.png

共有1个答案

长孙智刚
2023-11-03

这个问题可能是由于allow-createremote-method两个选项的使用方式引起的。

allow-create选项允许用户在选择框中输入未在列表中出现的值,然后你可以通过remote-method远程方法来搜索这个值并添加到列表中。然而,如果用户输入的值已经在列表中存在,allow-create不会做任何事情,也就是说,它不会自动将这个值添加到列表中。

在你的代码中,你提到复制一个值到选择框中,然后在remoteMethod中模糊搜索到该数据。如果这个复制的值已经在advisor_list列表中存在,那么它将会在列表中出现两次,因为allow-create不会自动添加这个值。

一个可能的解决方案是检查在复制值之后,是否已经在列表中存在,如果存在,就清除掉。你可以在advisorChange事件处理器中做这个检查。

以下是一个可能的实现:

methods: {  advisorChange(value) {    let item = this.advisor_list.find(item => item.advisor === value);    if (item) {      // 如果找到匹配的项,清除选择的值      this.$refs.select.clear();    } else {      // 否则,执行远程方法来搜索值并添加到列表中      this.remoteMethod(value);    }  }}

在这个代码中,我们首先检查在复制的值是否已经在列表中存在。如果存在,我们就清除选择的值。否则,我们就执行远程方法来搜索值并添加到列表中。

 类似资料:
  • 使用下面的数据集,我希望找到平均速率,同时计算条件和干预中的值在同一行中的次数。 这是我使用的表的一个示例:

  • 问题内容: 我在购物车上工作,人们需要在同一页面上填写2个类似的表格。第一个表格是帐单地址,第二个表格是收货地址。两种形式都包含相似的输入元素,例如: a)帐单邮寄地址:姓名,地址行1,地址行2,国家/地区,电话等。 b)送货地址:姓名,地址行1,地址行2,国家/地区,电话等。 有一个复选框,上面写着“检查账单地址和送货地址是否相同”。因此, 即使仅选中此复选框, 我也需要将数据从帐单地址复制到送

  • 本文向大家介绍在单个MySQL查询中使用INSERT和SELECT将一列的值复制到另一列,包括了在单个MySQL查询中使用INSERT和SELECT将一列的值复制到另一列的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是创建第二个表的查询- 现在让我们使用一个MySQL查询将一列的

  • 我有一个列为col1-col10的表tablename。并非每一行都填充了col4,但每一行都填充了col1、col2、col3。我想在col4满足条件时获取所有{col1,col2,col3}元组,然后从tablename中获取与元组{col1,col2,col3}匹配的所有行。 我不确定是否应该使用内部联接、左联接或其他方式?(我认为内部连接和左连接都应该给我相同的结果)下面的查询给了我一个语

  • 当两个线程同时调用相同的静态方法时会发生什么?例如: 第一个线程现在调用someMethod()。第二个线程从现在起0.5秒后调用someMethod()(第一个线程仍在处理数据)。 我知道someMethod()可以同步。但如果它不同步,会发生什么呢?

  • 问题内容: 如何将值从一列复制到另一列?我有: 我希望有: 我应该有哪些mysql查询? 问题答案: 有关代码的简短答案是: 这是表名,周围是重音符号(又称“-”),因为这是MySQL惯例,用于转义关键字(在这种情况下为关键字)。 请注意,这是非常危险的查询,它将擦除表每行中列中的所有内容,并替换为(无论其值如何) 使用子句将查询限制为仅特定的行集更为常见: