Панель навигации Vuetify закрывается только после двойного щелчка по элементу

#javascript #visual-studio #vue.js #vuetify.js #v-navigation-drawer

#javascript #visual-studio #vue.js #vuetify.js #v-навигация-ящик

Вопрос:

Я очень новичок в Vue, поэтому я не уверен, как это проверить, но мой vue v-navigation-drawer находится ниже, он находится в app-root.vue. Сначала он работал, закрываясь при нажатии на элемент ящика, но теперь вам нужно щелкнуть дважды, чтобы он закрылся.

Первый щелчок приведет вас на страницу, а затем второй щелчок закроет панель. К вашему СВЕДЕНИЮ — если я уже на странице, то щелчок по ней один раз закроет ее.

Я не вижу никаких ошибок в отладчике.

Вот мой ящик и скрипт

 export default {
  data() {
    return {
      drawer: false,
    }
  },
  computed: {
    isPageLoading: {
      get() {
        return this.$store.state.appRoot.isPageLoading
      },
      set(value) {
        this.$store.commit('appRoot/isPageLoadingUpdate', value)
      }
    },
  }
} 
 <template>
    <div id="app">
        <v-app id="inspire">
            <v-navigation-drawer fixed temporary disable-resize-watcher v-model="drawer" app>
                <v-subheader class="mt-3 grey--text text--darken-1">ENTRY</v-subheader>
                <v-list dense>
                    <v-list-tile @click="drawer = !drawer" to="/entry/records">
                        <v-list-tile-content>
                            <v-list-tile-title>Records</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/coworkers">
                        <v-list-tile-content>
                            <v-list-tile-title>Coworkers</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/defendants">
                        <v-list-tile-content>
                            <v-list-tile-title>Defendants</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/documentjobs">
                        <v-list-tile-content>
                            <v-list-tile-title>Document Jobs</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/jobsites">
                        <v-list-tile-content>
                            <v-list-tile-title>Jobsites</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/locations">
                        <v-list-tile-content>
                            <v-list-tile-title>Locations</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/products">
                        <v-list-tile-content>
                            <v-list-tile-title>Products</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/ships">
                        <v-list-tile-content>
                            <v-list-tile-title>Ships</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/sources">
                        <v-list-tile-content>
                            <v-list-tile-title>Sources</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/witnesses">
                        <v-list-tile-content>
                            <v-list-tile-title>Witnesses</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>

                    <v-divider dark></v-divider>

                    <v-subheader class="mt-3 grey--text text--darken-1">ADMIN</v-subheader>
                    <v-list-tile @click="drawer = !drawer" to="/Admin/Users">
                        <v-list-tile-content>
                            <v-list-tile-title>Users</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <br />
                </v-list>
            </v-navigation-drawer>
            <v-toolbar color="indigo" dark fixed app>
                <v-toolbar-side-icon @click.stop="drawer = !drawer"></v-toolbar-side-icon>
                <v-toolbar-title>Mpid2</v-toolbar-title>
            </v-toolbar>
            <v-content>
                <router-view></router-view>
            </v-content>
            <v-footer fixed app height="auto" style="min-height: 0">
                <!--<v-progress-linear :active="isPageLoading" class="ma-0" :indeterminate="true"></v-progress-linear>-->
            </v-footer>
        </v-app>
    </div>
</template> 

Комментарии:

1. Можете ли вы указать действительную скрипку или codepen?

2. У меня похожая проблема. Для переключения ящика необходимо дважды нажать.

Ответ №1:

Я изменил ящик: @click.stop на @click.native и теперь работает.

Ответ №2:

Это правда, что вы использовали Vuex. Но если вы не хотите дважды щелкать, вы можете сделать следующее:

шаг 1) Импортируйте директиву v-click-outside из Vuetify и остановите и запустите вашу систему один раз.

шаг 2) В дополнение к методам, которые вы определили в HTML, создайте другой метод для этого каталога, о котором я упоминал, например, следующий:

 <v-list-tile 
@click="drawer = !drawer" 
***v-click-outside="onClickOutside" 
to="/entry/records">
 <v-list-tile-content>
<v-list-tile-title>Records</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
 

шаг 3) Определите следующий метод один раз для этого следующим образом:

 onClickOutside() {
  this.$store.commit('appRoot/isPageLoadingUpdate', value)
},
 

шаг 4) Следует отметить только одно: если
drawer: false , было, вы должны запретить запуск метода. Например, следующий код:

 onClickOutside() {
if (drawerAction === true) { 
this.$store.commit('appRoot/isPageLoadingUpdate', value)}
},