Я думаю, что для того, чтобы разделить озабоченности, выпадающий контейнер должен быть тем, который решает, когда закрывать выпадающий список, а компонент, содержащий слоты, должен выдавать событие, которое может использоваться, чтобы указать, что что-то произошло, например , что предмет был выбран.
Я бы заставил контейнер слушать событие в слоте:
<slot v-on:item-selection="itemSelected" />
... и функция для получения выбранного значения:
function itemSelected(price) {
this.price = price;
hideDropdown();
}
В этом случае событие называется item-selection
.
Тогда я бы выпустил это событие из компонента:
<li class="hintList__item" v-for="price in lessThan(autocompletePricesDesktop, editableCriteria.Price.To)" @click="itemClicked(price)">
... и метод в этом компоненте:
itemClicked(price) {
this.$emit('item-selection', price);
}
Надеюсь, это имеет смысл: -)