Search code examples
javascriptvue.jssyntaxvue-meta

How to use a Vue variable in metaInfo?


What is the correct syntax for this line Vue inside the script:

export default {
metaInfo: {
      title: "{product.name} wallpaper",

The line came to the form:

title: "Space wallpaper",

product.name I get it in api:

mounted() 
{ 
let vm = this
vm.getProducts(); 

},
methods: {
getProducts() {
                let vm = this
                axios.get('/api/products')
                    .then(function(response) {
                        vm.products = response.data.data  
                    })

Solution

  • Template literals use backticks and a dollar sign before the braces, e.g.:

    title: `${product.name} wallpaper`
    

    To use reactive variables in the metaInfo as part of a function, the Vue Meta docs says that you can make metaInfo a function and assign the reactive variable to a local variable before returning the data. For example:

    metaInfo() {
          const product = this.product;
          return {
              title: `${product.name} wallpaper`
          }
    }
    

    One of the contributors to Vue Meta explained why you need to do it this way here.