#javascript #vue.js #vue-router
#javascript #vue.js #vue-router
Вопрос:
Проверил похожие вопросы в stackoverflow, но не смог найти рабочего решения.
Я хочу проверить, является ли подпрограмма дочерним элементом определенного маршрута для отображения контейнера (или нет).
К сожалению, следующее не работает:
<div v-if="this.$route.matched.some(route => route.path === '/projects')">
etc.
</div>
Я пытаюсь отображать div
контейнер www.example.com/projects
снова и снова www.example.com/projects/foo
Я также попытался опустить this
.
Спасибо за любые советы!
Комментарии:
1. Используете ли вы Nuxt.js ?
Ответ №1:
Вы можете использовать
<div v-if="this.$route.matched.some(route => route.path.includes('/projects')">
etc.
</div>
метод includes() определяет, содержит ли массив определенное значение среди своих записей, возвращая значение true или false в зависимости от обстоятельств, поэтому www.example.com/projects/foo
и www.example.com/projects
возвращает true
Ответ №2:
Лучше всего проверить имя маршрута
['route1', 'subroute1'].indexOf($route.name) >= 0
Ответ №3:
Если мне нужно скрыть какой-либо div в одном из путей, я использую this.$route.path
свойство.
<div v-if="this.$route.path === '/projects'">
Display only on views witch route is /projects
</div>
Если вы хотите скрыть div во всех путях, содержащих ‘/projects’, вы можете сделать это таким образом.
<div v-if="this.$route.path.indexOf('/projects') >= 0">
Display only on views which contains /projects
</div>
Комментарии:
1. Спасибо, это сработало так же хорошо, как и другие ответы!