javascript - 仅获取选择项vue js的值
问题描述
我vue-multi-select
在我的应用程序中使用包进行多选。它以以下形式存储和发送选定的数据:
[{name: volvo},{name: saab}, ...]
或者用简单的 HTML 术语来说:
<select name="name" multiple>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
将所选项目的文本作为值发送。但是我们为什么要 text 呢?我们需要这样的选定项目的 ID:
<select name="name" multiple>
<option value="1">Volvo</option>
<option value="2">Saab</option>
<option value="3">Opel</option>
<option value="4">Audi</option>
</select>
并获取如下格式的数据:
[{name: 1},{name: 2}, ...]
为了得到我想要的结果,我尝试了这个:
<vue-multi-select
v-model="form.includeds_id"
search
historyButton
:btnLabel="btnLabel"
:filters="filters"
:options="options"
:selectOptions="includeds"
/>
import vueMultiSelect from "vue-multi-select";
import "vue-multi-select/dist/lib/vue-multi-select.css";
export default {
data() {
return {
options: {
multi: true,
groups: false,
cssSelected: option =>
option.selected ? {
"background-color": "#3f51b5"
} : ""
},
filters: [{
nameAll: "Select all",
nameNotAll: "Deselect all",
func() {
return true;
}
}],
includeds: [{
id: "",
name: ""
}],
form: new Form({
id: "",
title: "",
includeds_id: []
})
};
},
components: {
vueMultiSelect
},
created() {
axios.get("api/includeds").then(response => {
this.includeds = response.data.map((obj, index) => {
return {
name: obj.name
};
});
});
}
};
export default {
data() {
return {
options: {
multi: true,
groups: false,
cssSelected: option =>
option.selected ? {
"background-color": "#3f51b5"
} : ""
},
filters: [{
nameAll: "Select all",
nameNotAll: "Deselect all",
func() {
return true;
}
}],
includeds: [{
id: "",
name: ""
}],
form: new Form({
id: "",
title: "",
includeds_id: []
})
};
},
components: {
vueMultiSelect
},
created() {
axios.get("api/includeds").then(response => {
this.includeds = response.data.map((obj, index) => {
return {
id: obj.id,
name: obj.name
};
});
});
}
};
通过上述代码片段,我最终得到了这个:
如果我删除name:obj.name
. 我获得了所选项目的所需 ID,但在选择选项中看不到文本。
有什么方法可以在选择选项中显示文本并获取所选项目的 ID 数组?
解决方案
将您的数据更改为:
data = [
{name: '1'},
{name: '2'},
{name: '3'},
{name: '4'},
{name: '5'},
]
然后添加 labelName 属性以获取用户友好的标签。
推荐阅读
- android - 应用程序在后台时如何取消所有 Toast?
- css - 如何在wordpress帖子中删除项目符号前的空格?
- javascript - 将 ActionReducerMap 与 StoreModule.forFeature 一起使用会产生构建错误
- laravel-5 - Symfony\Component\Debug\Exception\FatalThrowableError (E_ERROR) 在 null 上调用成员函数 update()
- javascript - 如何在量角器的 do...while 循环中处理 Promise
- c++ - 我正在学习将一些温度值存储在向量中。当我执行并运行它时,它不起作用,我不知道是什么问题
- c# - 解析URL中带括号的参数
- dropdown - 我无法在柏树的下拉列表中切换值。下拉菜单不是选择类型
- iphone - 如何在 iPhone 的 https://github.com/marcandre/detect_swipe 中禁用向上/向下滑动 javascript 代码
- sql - oracle 查询从生成的查询中获取具有空列的行