Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

139
Views
Vue: abre la etiqueta de detalles cuando el enlace del enrutador está activo

Quiero dar una etiqueta de detalles al atributo abierto cuando es hijo, en este caso el <router-link> está activo. Así que creé una etiqueta de detalles...

 <!-- ...template --> <details> <summary class="flex items-center" > <span class="ml-3 text-sm font-medium">Open</span> </summary> <nav class="ml-5 flex flex-col"> <router-link to="/detail" class="flex items-center" > <span>Detailview</span> </router-link> <router-link to="/about" class="flex items-center" > <span>About it</span> </router-link> </nav> </details>

Ahora hice una función para obtener todos los enlaces de enrutador y el filtro que tiene los detalles de parent/parentNode. Probé y funciona! Pero ahora solo quería el enlace del enrutador con class="router-link-active" adentro y arroja errores:

TypeError no capturado: detail_tags[i] no está definido

 <script setup> import { onMounted } from "vue"; onMounted(() => { const detail_tags = document.querySelectorAll("a"); for (let i = 0; i <= detail_tags.length; i++) { if ( detail_tags[i].parentElement.parentElement.tagName == "DETAILS" && detail_tags[i].classList.contains("router-link-active") ) { detail_tags[i].parentElement.parentElement.open = true; } } }); </script>

¿Cómo puedo resolver este problema para abrir solo los detalles de qué enlace de enrutador secundario tiene clase de enlace de enrutador activo?

about 4 years ago · Santiago Gelvez
2 answers
Answer question

0

Es el clásico error "off by 1": los elementos de Array se cuentan desde 0, por lo que no debe hacer referencia a un elemento cuyo índice sea igual o mayor que el número de elementos de Array:

 for (let i = 0; i <= detail_tags.length; i++) { // replace the "<=" with "<"
about 4 years ago · Santiago Gelvez Report

0

Normalmente usaría el enrutador de la siguiente manera

 <div id="app"> <nav class="ml-5 flex flex-col"> <router-link to="/detail" class="flex items-center" > <span>Detailview</span> </router-link> <router-link to="/about" class="flex items-center" > <span>About it</span> </router-link> </nav> <!-- component matched by the route will render here, in your case details --> <router-view></router-view> </div>

No creo que sea prudente desviarse de este patrón, probablemente terminará con componentes ilógicos.

about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!