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

230
Views
VueRouter no recibe la propiedad meta en la etiqueta de enlace del enrutador

Estoy tratando de pasar meta a través de la etiqueta <router-link> . Me gusta esto:

 <router-link :to="{path: '/inlineMeta', meta: {title: 'Inline meta'}}"> Inline meta </router-link>

Quiero lograr esto porque puedo pasar metas dinámicamente desde un marco de back-end directamente en la etiqueta misma. Declarar la opción de routes en un archivo JS simplemente no tiene ese poder.

Teóricamente, cualquier objeto pasado a través de prop debería ser empujado a la pila del router , ¿verdad? Pero en este caso no lo parece.

Si declaro meta en la opción de routes , definitivamente funciona. No hay duda sobre eso.

Me pregunto si es posible hacerlo, y ¿cómo lo haría?


Un pequeño violín para ilustrar el problema. Haga clic en URL y observe la consola. No puedo hacer que el fragmento de StackOverflow funcione correctamente.

JSFiddle

 Vue.use(VueRouter); const cComponent = { data() { return { fetchedData: null } }, template: `<div>The meta is: {{$route.meta.title}}</div>`, } const routes = [{ path: "/inlineMeta", component: cComponent, }, { path: "/routeMeta", meta: { title: 'Meta declared in routes' }, component: cComponent, } ] const router = new VueRouter({ mode: "history", routes, }) router.beforeEach((to, from, next) => { console.log("The meta title is : " + to.meta.title); }) const app = new Vue({ el: "#app", router, })
 <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script> <script src=" https://unpkg.com/vue-router@3.5.1/dist/vue-router.js"></script> <div id="app"> <router-link :to="{path: '/inlineMeta', meta: {title: 'Inline meta'}}">Inline meta</router-link> <router-link :to="{path: '/routeMeta'}">Meta declared in routes</router-link> <router-view></router-view> </div>

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Si desea pasar los parámetros entre dos componentes, use props . v-bind:to en <route-link> solo se usa para la coincidencia de ruta, por lo que no puede usarlo para establecer el valor de meta. Si desea configurar el meta sin declararlo en la ruta, creo que usar "this.$route.meta.title="Inline meta" " en js. como usar el evento de clic:

 <li @click="setMeta"> <router-link :to="{path: '/inlineMeta'}"> Inline meta </router-link> </li>

y en js:

 method:{ setMeta(){ this.$route.meta.title="Inline meta"; } }

también puede usar mounted() en el nuevo componente al que acaba de enrutar:

 mounted(){ this.$route.meta.title="Inline meta" }

y el meta se modificará después de recargar. Esto puede funcionar aunque no parezca tan elegante.

over 4 years ago · Santiago Trujillo 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!