14

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

我正在使用 metaInfo 函数并尝试更改例如标题。但是来自我的 getter 的数据是未定义的,这就是为什么我不能更改元标记中的标题。似乎 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>
4

1 回答 1

14

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

所以你应该在使用它的属性之前检查数据,当加载数据时 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",
         }
     };
于 2018-11-21T13:10:37.510 回答