1

我有一个 vue 组件,它在下载后立即发送 axios 请求。我也使用 vue-social-sharing 并且我需要 og:image 元,但是我的图像在 axios 响应后返回。

<template>
    <div class="container">
        <div v-if="collageSrc" class="col-md-12 collage">
            <img class="img-responsive" :src="this.collageSrc"/>


            <social-sharing>
                <div>
                    <network network="facebook">
                        <i name="fa fa-facebook"></i> Facebook
                    </network>
                    <network network="twitter">
                        <i class="fa fa-twitter"></i> Twitter
                    </network>
                </div>
            </social-sharing>

        </div>
        <div class="col-md-12 collage" v-else>
            <h1>Your image is preparing...</h1>
        </div>
    </div>
</template>


<script>

    export default {
        name: 'collage',
        props:['id'],
        data: function(){
            return {
                collageWaiter: this.getCollageSrc(),
                collageSrc: '',
                url : '',
            }
        },
        metaInfo: {
            title : 'Compliment Genarator Collage',
            meta: [
                {charset : 'utf-8'},
                {
                    'vmid' : 'og:image',
                    'property' : 'og:image',
                    //'content' : this.collageSrc
                }
            ]
        },
        methods:{
            getCollageSrc(){

                const self = this;

                axios.get('/api/generate?id='+this.id)
                    .then(function(result){
                        self.collageSrc = result.data;
                        self.url = "http://compgen.ru/collage/" + self.id;
                    });
            }
        }
    }
</script>

如您所见,prop 'collageSrc' 在 axios 请求后变为可用。我如何动态将此道具包含到 meta og:image 中?

4

1 回答 1

0

定义metaInfo为函数,而不是对象:

metaInfo() {
  return {
    meta: [
      { vmid: 'og:image', property: 'og:image', content: this.collageSrc }
    ]
  }
}

https://vue-meta.nuxtjs.org/faq/component-props.html

于 2019-12-21T12:56:49.730 回答