Groyreg
@Groyreg
Front-end

Пуш в массив данных по выбору поля из тега select?

Добрый день. В голове никак не складывается как правильно это написать:

есть селект
<select class="form-control" v-model="choosenMetabolit" placeholder="тип события" >
         <option
            v-for="metabolit in metabolits"
            :key="metabolit"
            :value="metabolit">
            {{metabolit.name}}
         </option>
</select>

и вот его массив данных:
data(){
			return {
				metabolits: [{
						name: 'L-аланин',
						result_1: 72,
						result_2: -32,
						result_3: -33,
					},{
						name: 'L-аргинин',
						result_1: 96,
						result_2: 68,
						result_3: 72,
					},{
						name: 'L-аспарагиновая кислота',
						result_1: 17.89,
						result_2: 93.6,
						result_3: 81.3,
					},{
						name: 'L-глутаминовая кислота',
						result_1: 87.4,
						result_2: 54.8,
						result_3: 49.2,
					},{
						name: 'L-глицин',
						result_1: -17,
						result_2: -44,
						result_3: -38,
				}],
				choosenMetabolit: {},

Соответственно в choosenMetabolit попадает выбранный объект в селект. И вот после выбора нужно, чтобы данные объекта пушались в следующий объект:

anMetProfData: {
					labels: ["L-аланин"],
					datasets: [
						{
							label: "Результат 1",
							backgroundColor: ["#3e95cd"],
							data: [10]
						},
						{
							label: "Результат 2",
							backgroundColor: ["#8e5ea2"],
							data: [-35]
						},
						{
							label: "Результат 3",
							backgroundColor: ["#3cba9f"],
							data: [4]
						},

			    	]
			    },

Name должна падать в массив labels, а result_1, 2 и 3 имели путь datasets[0, 1 или 2]. data

И когда например я выберу селекте другое значение то объект anMetProfData дополнялся.
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Name должна падать в массив labels

Сделайте watcher для choosenMetabolit, что-то вроде

watch: {
  choosenMetabolit(val) {
    this.anMetProfData.labels.push(val.name);
  },
},

а result_1, 2 и 3 имели путь datasets[0, 1 или 2]. data

А вот эту фразу я не уверен что понял. "Имели путь" - в смысле значения result'ов записывались в соответствующие массивы data объектов, лежащих в datasets? Тогда можно дополнить watcher как-то так:

watch: {
  choosenMetabolit(val) {
    const data = this.anMetProfData;
    const sets = data.datasets;

    data.labels.push(val.name);
    sets[0].data.push(val.result_1);
    sets[1].data.push(val.result_2);
    sets[2].data.push(val.result_3);
  },
},
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
lavezzi1
@lavezzi1
В computed заведите массив в который будут фильтроваться/попадать данные из массива селекта.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы