Я постараюсь быть максимально подробным в своем объяснении.В настоящее время у меня есть веб-сайт Vue.js, который использует Google Places API для отображения всех достопримечательностей определенного города.
Чтобы получить достопримечательности, вам нужно указать, какой тип достопримечательностей вы ищете в GET-запросе к Google Place API.Например, вы можете искать бары, музеи и т. Д. Чтобы указать этот тип, необходимо добавить &type=sometype
к запросу GET.В настоящее время пользователь может выбрать тип, установив переключатель.Переключатели создаются путем циклического перемещения по массиву, который содержит все типы:
types: [{name: 'Libraries', type: 'library'},
{name: 'Parks', type: 'park'}],
И цикл for для переключателей:
<div v-for="el in types" :key="el.key">
<input type="radio" :id="el.name" :value="el.type" v-model="type">
<label :for="el.name">{{ el.name }}</label>
</div>
Нажатие любой из этих переключателей изменяетзначение свойства с именем type соответствует значению переключателя
data(){
return {
types: [{name: 'Libraries', type: 'library'},
{name: 'Parks', type: 'park'}],
type: '',
}
}
А затем у меня есть наблюдатель, который выполняет запрос GET для получения прицелов с этим конкретным типом:
watch: {
type: function () {
axios.get('/getSights/' + this.lat + '/' + this.lng + '/' + this.type)
.then(response => {
this.sights = response.data.result.results
this.nextPageToken = response.data.result.next_page_token
console.log(response)
}).catch((error) => console.log(error));
},
}
Это прекрасно работает, однако, в некоторых городах нет аквариумов или мест другого типа, поэтому, когда пользователь выбирает эту кнопку-переключатель, это приводит к пустой странице.Мне было интересно, есть ли какой-нибудь способ как-то не отображать переключатели, которые не будут возвращать никаких прицелов.
Одна из вещей, которая приходит мне в голову, это сделать все запросы GET перед тем, как даже рендерить любые кнопки иотправьте тип запроса GET в массив, если вышеупомянутые запросы GET вернут результаты> = 1, а затем отобразят кнопки на основе элементов этого массива.Это, однако, звучит очень неэффективно для меня, так как мне придется делать 10-15 запросов GET.