Вот пример того, как это сделать: https://codepen.io/antoniandre/pen/OJJQMGN?editors=1010
JS
new Vue({
el: '#app',
data: () => ({
selection1: null,
optionsList: ''
}),
methods: {
changeSelect2 () {
switch (this.selection1) {
case 'item1':
this.optionsList = '<option value="test">item1: test 1</option><option value="test2">item1: test 2</option>'
break;
case 'item2':
this.optionsList = '<option value="test">item2: test 1</option><option value="test2">item2: test 2</option>'
break;
case 'item3':
this.optionsList = '<option value="test">item3: test 1</option><option value="test2">item3: test 2</option>'
break;
}
}
}
})
HTML
<div id="app">
<select @change="changeSelect2" v-model="selection1">
<option value="item1">item1</option>
<option value="item2">item2</option>
<option value="item3">item3</option>
</select>
<select v-html="optionsList"></select>
</div>
Но это, конечно, не самый чистый способ сделать это, я просто преобразовал ваш пример как есть. Чтобы сделать его лучше, параметры должны быть в списке, вероятно.
Вот небольшой учебник, чтобы начать и понять:
- включает библиотеку Vue
- Никогда не манипулируйте DOM (если нет выбора), Vue is DATA DRIVEN
- прослушивание событий DOM на элементах DOM с помощью
@eventName
- поместите ваши функции в
methods
, и ваши переменные в data
это всегда так - атрибут
v-model
является двухсторонним связыванием и запускает автоматическое изменение переменной при изменении выбранного параметра списка выбора, это называется«реактивность». - поместите ваши переменные в html в
v-html
для HTML или усов {{ }}
, если вы хотите сохранить только его текстовое значение, а не HTML. - следуйте нескольким учебникам