У меня есть раскрывающееся меню, в котором параметры перечислены и перемешаны, так что выбранный вариант становится первым. Этот сценарий работает по назначению:
<div id="main">
<sub-select :subs="data" @comp-update="onShufflePaths($event)"></sub-select>
</div>
. .
const ui = {
setup() {
let data = ref('first_second_thrid');
const onShufflePaths = (ind) => {
let subs = data.value.match(/[^_]+/g);
const main = subs.splice(ind, 1)[0];
data.value = [main, ...subs].join('_');
}
return {
data, onShufflePaths,
};
},
};
const vueApp = createApp(ui);
vueApp.component('sub-select', {
props: ['subs'],
emits: ['comp-update'],
setup(props, { emit }) {
let subs = computed(() => props.subs.match(/[^_]+/g));
let subpath = computed(() => '0: ' + subs.value[0]);
function onChange(evt) {
emit('comp-update', evt.slice(0,1));
}
return { subs, subpath, onChange };
},
template: `
<select :value="subpath" @change="onChange($event.target.value)">
<option v-for="(v,k) in subs">{{k}}: {{v}}</option>
</select> {{subpath}}`
});
vueApp.mount('#main');
Проблема в том, что если я удалю {{subpath}} из шаблона, появится раскрывающееся меню без выбранных по умолчанию параметров. Похоже, что: value = subpath самого по себе недостаточно для обновления переменной subpath при обновлении props, если это явно не указано в шаблоне.
Как заставить его работать?
По сути, мне нужно, чтобы по умолчанию всегда был выбран первый вариант.
Спасибо!