#javascript #rest #vue.js #axios
#javascript #остальное #vue.js #axios
Вопрос:
У меня проблема с переключением [вот так.][1]
Когда я нажимаю на каждый плюс, api генерирует дочерние данные из родительского. Как каскадный выпадающий список, но я хочу переключать все с помощью кнопки.
Когда я пытаюсь это сделать, мой переключатель просто открывает два уровня, а не влияет на каждый уровень.
Я не знаю, почему это происходит.
Позвольте мне объяснить, как должна работать кнопка переключения:
Когда я нажимаю кнопку развернуть, все первые / родительские элементы отправляют запрос в мой api. Я смотрю «параметр firstdata» внутри запроса компонента, отправляю в api, затем все данные поступают из моего api и заполняют связанные переменные.
Затем у меня есть вторая переменная состояния для запуска дочерних / вспомогательных уровней.
Я устанавливаю для переменной состояния следующего уровня значение true, когда запрос выполнен. Следующий компонент внутри проверяет эту переменную на наличие запросов, но это работает неправильно.
Прошу прощения за плохой английский, надеюсь, я мог бы рассказать о своей проблеме
Спасибо
Коды первого уровня
watch:{
toggleAll:{
handler(toggler){
console.log("trigger Stations");
this.getStations().then(resp =>{
if(toggler==true)
{
console.log(toggler);
this.$store.commit('Vehicle/setToggleAllGroup',true)
}
});
}
}
},
methods: {
getStatus(status) {
return parseStatus(status)
},
async getStations(){
if(this.toggled){
this.toggled = false
return;
}
await this.$store.dispatch('Vehicle/getCounts', {type: 'status', param: this.status._id})
this.toggled = true
},
}
<v-row>
<!--<td > <v-checkbox v-if="level>2"/></td>-->
<v-col md="2">
<v-btn style="background-color: darkcyan;" class="white--text" x-small @click="getStations">
<v-icon v-if="!toggled">mdi-plus</v-icon>
<v-icon v-else>mdi-minus</v-icon>
</v-btn>
{{ getStatus(status._id) }}
</v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1" class="text-success font-weight-bold">{{ status.count }}</v-col>
<v-col md="1">{{ ((100 * status.count) / totalVehicleAmount).toFixed(2) }}</v-col>
<v-col md="12" v-if="toggled amp;amp; stations.statuses[status._id].stations.length amp;amp; stations.statuses[status._id].name==status._id ">
<all-vehicles-by-status-station-row :key="station._id.code" v-for="station in stations.statuses[status._id].stations" :station="station" :status="status"/>
</v-col>
</v-row>
Station Codes
watch:{
ToggleAllGroup:{
handler(){
console.log("trigger Group");
this.getGroup()
}
}
},
async getGroup() {
if (this.toggled) {
this.toggled = false
return;
}
await this.$store.dispatch('Vehicle/getCounts', {
type: 'station',
param: this.status._id,
station: this.station._id.code
})
this.toggled = true
},
}
<v-row>
<v-col md="2" class="pl-10">
<v-btn style="background-color: darkcyan;" class="white--text" x-small @click="getGroup">
<v-icon v-if="!toggled">mdi-plus</v-icon>
<v-icon v-else>mdi-minus</v-icon>
</v-btn>
{{ station._id.code }}
</v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1"></v-col>
<v-col md="1">{{ station.count }}</v-col>
<v-col md="1">{{ ((100 * station.count) / totalVehicleAmount).toFixed(2) }}</v-col>
<v-col md="12" v-if="toggled amp;amp; groups.stations[station._id.code].groups.length amp;amp; groups.stations[station._id.code].name==station._id.code">
<all-vehicles-by-status-group-row v-for="group in groups.stations[station._id.code].groups" :key="guid(group._id.group)" :group="group" :status="status" :station="station" />
</v-col>
</v-row>
Коды станций
Когда я нажимаю переключить все первые getStations, часы работают правильно, но часы внутри GetGroups не запускаются должным образом.. эта работа только часть
например
X —> Первая основная категория X1 -> Подкатегория X1.2 -> Категория SubtoSub
Y —> Вторая основная категория Y1 —> Подкатегория (работает) ——— эти данные не поступают, потому что наблюдатель не запускает триггер.
Комментарии:
1. Не могли бы вы создать codesandbox , демонстрирующий вашу проблему? Было бы намного проще отлаживать таким образом.
2. к сожалению, я не могу поделиться некоторыми кодами.