#vue.js #binding #multi-select
#vue.js #привязка #множественный выбор
Вопрос:
В моем компоненте у меня есть multiselect, который должен выбирать параметры при соответствующем переданном значении:
<select class="custom-select" multiple="" v-model="items">
<option v-for="item in objects_list" :selected="itemSelected(item)" :key="item.id" :value="item.id">
{{item.name}}
</option>
</select>
…
methods() {
itemSelected(item) {
let selected;
let object_selected = this.value.filter(object => {
console.log(object)
if(item.id == object) {
return true;
}
});
}
похоже, что выбранная привязка не работает, как правильно реализовать multiselect для привязки выбранных параметров?
Ответ №1:
Лучший способ сделать это — использовать СОЗДАННУЮ функцию из Vue.js
<template>
<div>
<select class="ur-CSS-class" multiple v-model="selected">
<option v-for="item in objects_list" :key="item.id" :value="item.id">
{{ item.name }}
</option>
</select>
<br />
<span>Selected : {{ selected }}</span>
</div>
</template>
<script>
var your_list = [
{ name: "one", id: 13 },
{ name: "two", id: 18 },
{ name: "three", id: 11 },
{ name: "four", id: 7 },
{ name: "five", id: 1 },
{ name: "six", id: 2 },
];
export default {
name: "App",
data() {
return {
objects_list: your_list,
selected: []
};
},
props:{
inputData: {
type: Object,
required: true
}
},
computed: {
selected() {
let selected = this.objects_list.filter(item => {
return this.inputData.find(i => i == item.id);
});
return selected;
}
}
};
</script>
Комментарии:
1. Спасибо за объяснения, но я хочу, чтобы selected_options были предварительно вычислены таким образом, чтобы у меня были значения, получаемые из хранилища
2. Я хотел бы вам помочь, но не могли бы вы быть более конкретными? Из того, что я понял, у вас есть список, полученный вашим магазином, затем вы получаете этот список objects_list и хотите отображать только те элементы, которые item.id равно объекту (объекту, который вы вычисляете на своей стороне). И поэтому это отображение должно быть «мгновенным». Или у вас есть текстовое поле для добавления значений в список, и они отображаются (например, ниже), только если они подтверждают ваше условие?
3. Моя цель — просто иметь список элементов и предварительно выбранных элементов из хранилища в поле multiselect
4. Думаю, я понял вашу проблему, для ее решения я использовал функцию CREATED(), которая позволяет вам сортировать (и в вашем случае предварительно выбирать) нужные вам элементы.
5. Ваше решение работает хорошо, за исключением того, что вам не нужно возвращать объект в created (), он должен быть в логике вычислений или данных