Memeriksa pertanyaan serupa di stackoverflow tetapi tidak dapat menemukan solusi yang berfungsi.

Saya ingin memeriksa apakah subroute adalah anak dari rute tertentu untuk menampilkan wadah (atau tidak).

Sayangnya, berikut ini tidak berfungsi:

<div v-if="this.$route.matched.some(route => route.path === '/projects')">
   etc.
</div>

Saya mencoba menampilkan wadah div di www.example.com/projects DAN di www.example.com/projects/foo

Saya juga mencoba menghilangkan this.

Terima kasih untuk tipsnya!

0
To E 4 Januari 2021, 16:06

3 jawaban

Jawaban Terbaik

Kamu bisa memakai

<div v-if="this.$route.matched.some(route => route.path.includes('/projects')">
   etc.
</div>

Metode include() menentukan apakah sebuah array menyertakan nilai tertentu di antara entri-entrinya, mengembalikan true atau false sebagaimana mestinya sehingga www.example.com/projects/foo dan www.example.com/projects mengembalikan true

1
mtc 4 Januari 2021, 14:27

Yang terbaik adalah memeriksa nama rute

['route1', 'subroute1'].indexOf($route.name) >= 0
1
ybenhssaien 4 Januari 2021, 13:30

Jika saya perlu menyembunyikan beberapa div di salah satu jalur, saya menggunakan properti this.$route.path.

<div v-if="this.$route.path === '/projects'">
  Display only on views witch route is /projects
</div>

Jika Anda ingin menyembunyikan div di semua jalur yang berisi '/ proyek', Anda dapat membuatnya dengan cara ini.

<div v-if="this.$route.path.indexOf('/projects') >= 0">
  Display only on views which contains /projects
</div>
1
laurisstepanovs 4 Januari 2021, 13:42