我现在这样写 <el-select v-model="queueName50" placeholder="队列选择(50)(为空则全选)" multiple filterable allow-create clearable style="width: 300px; margin: 10px"> <el-option v-for="item in queueNameList[server50]" :key="item.nameWithIp" :label="item.label" :value="item"> </el-option> </el-select> 可是当我在选择框选择一项时所有项都点亮了,这是为什么 里
时间: 2024-02-10 20:12:09 浏览: 23
这个问题可能是因为您在`queueName50`中使用了`item`对象,而不是`item`对象的`name`或`value`。由于`el-select`在多选模式下,`v-model`绑定的是一个数组,数组中应该是每个选项的`value`值,而不是选项对象本身。您可以将`item`对象的`name`或`value`作为`value`绑定到`el-option`上,这样就能够正常选择了。具体代码如下:
```html
<el-select v-model="queueName50" placeholder="队列选择(50)(为空则全选)" multiple filterable allow-create clearable style="width: 300px; margin: 10px">
<el-option v-for="item in queueNameList[server50]" :key="item.nameWithIp" :label="item.label" :value="item.name"></el-option>
</el-select>
```
这里将`item`对象的`name`作为`value`绑定到了`el-option`上,这样就能够正常选择了。如果您需要使用`item`对象,可以在`el-select`的`@change`事件中处理选中项的变化,将选中的每个`value`值对应的`item`对象包装成一个新对象,然后更新`queueName50`的值。
相关问题
我的el组件是这样的 <el-select v-model="queueName50" placeholder="队列选择(50)(为空则全选)" multiple filterable allow-create clearable style="width: 300px; margin: 10px"> <el-option v-for="item in queueNameList[server50]" :key="item.nameWithIp" :label="item.label" :value="item"> </el-option> </el-select> 现在选中后值为整个item,现在我想改成选中后值为item中的两个属性组成的新对象,要怎么写
你可以在 `el-option` 标签中的 `value` 属性绑定一个函数,该函数返回一个新的对象,包含你想要的两个属性。例如:
```
<el-select v-model="queueName50" placeholder="队列选择(50)(为空则全选)" multiple
filterable allow-create clearable
style="width: 300px; margin: 10px">
<el-option v-for="item in queueNameList[server50]"
:key="item.nameWithIp"
:label="item.label"
:value="getOptionValue(item)">
</el-option>
</el-select>
...
methods: {
getOptionValue(item) {
return { nameWithIp: item.nameWithIp, label: item.label };
}
}
```
上述代码中,`getOptionValue` 方法返回一个新的对象,包含 `nameWithIp` 和 `label` 两个属性。这个方法被绑定到 `el-option` 的 `value` 属性上,所以选中后的值就是这个新对象。
<el-select multiple v-model="queueName" placeholder="选择队列名" filterable allow-create clearable style="width: 350px; margin: 10px" > <el-option v-for="item in queueNameList" :key="item.value" :label="item.label" :value="item.value" /> </el-select> 为什么我这el-select组件点击只能全选我要的是多选而不是全选啊
根据你提供的代码,点击下拉框选项会全选的原因可能是因为你在`<el-select>`组件中同时开启了`multiple`和`filterable`属性,这会导致下拉框中的选项被视为可搜索的,而在搜索框中输入任何内容都会匹配到所有选项,从而导致所有选项被选中。
如果你只想启用多选模式,可以将`filterable`属性移除,例如:
```
<el-select multiple v-model="queueName" placeholder="选择队列名" allow-create clearable style="width: 350px; margin: 10px">
<el-option v-for="item in queueNameList" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
```
这样就只会启用多选模式,而不会开启搜索框。