Javascript Vue meta:metaInfo不';我没有访问计算属性的权限

Javascript Vue meta:metaInfo不';我没有访问计算属性的权限,javascript,vue.js,vue-meta,Javascript,Vue.js,Vue Meta,我正在使用vue meta动态更改我的meta标记。我只想在某些特定页面上更改它 我正在使用metaInfo函数并尝试更改,例如,标题。但是我的getter中的数据是未定义的,这就是为什么我不能更改meta标记中的标题。看起来metaInfo函数试图在组件实际拥有数据之前访问数据 以下是我在组件中的代码: <template> ... </template> <script> export default { metaInfo() {

我正在使用vue meta动态更改我的meta标记。我只想在某些特定页面上更改它

我正在使用metaInfo函数并尝试更改,例如,标题。但是我的getter中的数据是未定义的,这就是为什么我不能更改meta标记中的标题。看起来metaInfo函数试图在组件实际拥有数据之前访问数据

以下是我在组件中的代码:

<template>
...
</template>

<script>
 export default {
     metaInfo() {
       return {
         title: this.getViewPage.data.meta.title, // data is undefined
    };
  },
  created() {
     this.loadViewPage();
  },
  computed: {
     ...mapGetters(['getViewPage']),
  },
  methods: {
     ...mapActions(['loadViewPage']),
};
</script>

...
导出默认值{
metaInfo(){
返回{
title:this.getViewPage.data.meta.title,//数据未定义
};
},
创建(){
这个.loadViewPage();
},
计算:{
…映射器(['getViewPage']),
},
方法:{
…映射操作(['loadViewPage']),
};

vue meta
只是从
metaInfo
函数(根据插件源代码)创建计算属性,因此我假设您的
loadViewPage
操作异步填充
数据
对象,您的问题只是转换为空检查问题

所以,您应该在使用数据的属性之前检查数据,并且在加载数据时,metaInfo也会更新对象:

     metaInfo() {
         // don't know your return object structure, 
         // maybe you should check whole this.getViewPage
         let data = this.getViewPage.data; 
         return {
             title: data ? data.meta.title : "some placeholder title",
         }
     };

非常感谢!这个解决方案很有效。我还检查了我的getter并创建了一个新的getter,以便将元数据保存到另一个存储中。