计算属性的“评估期间的错误”

时间:2018-04-25 07:33:08

标签: vue.js vuejs2 vue-component

我遇到的问题是计算属性有时只能起作用。有时它有值/错误templateComponent:"(error during evaluation)"

可能导致此问题的原因是什么?如果有人能指出我正确的方向,我可以进一步调查,但我不知道从哪里开始。

问题计算属性:

// Error in the below computed property
templateComponent() {
  let template = 'default' // assign default template

  if (!_.isNull(this.wp.template) && this.wp.template.length)
    template = this.wp.template.replace('.php','').toLowerCase()

  return template
}

Page.vue

<template>
    <div v-if="wp">
      <component :is="templateComponent" v-bind:wp="wp"></component>
    </div>
    <p v-else>Loading...</p>
</template>

<script type="text/javascript">

import { mapGetters } from 'vuex'
import * as Templates from './templates'

// Map template components
let templateCmps = {}
_.each(Templates, cmp => {
    templateCmps[cmp.name] = cmp
})

export default {

  props: ["slug"],

  components: {
    ...templateCmps

    // Example of templateCmps is below
    // 'default': Templates.Default,
    // 'agency': Templates.Agency,
    // 'home': Templates.Home,
  },

  computed: {
    ...mapGetters(['pageBySlug']),

    wp() {
      return this.pageBySlug(this.slug);
    },

    // Error in the below computed property
    templateComponent() {
      let template = 'default' // assign default template

      if (!_.isNull(this.wp.template) && this.wp.template.length)
        template = this.wp.template.replace('.php','').toLowerCase()

      return template
    }
  },

  created() {
    // Get page title, content, etc. via rest request
    this.$store.dispatch('getPageBySlug', { slug: this.slug })
  }
}
</script>

1 个答案:

答案 0 :(得分:0)

问题可能与this.wp.template有关。你确定它总是一个可以调用lowerCase的字符串吗?如果计算属性返回的不是字符串,则可能导致问题。

此外,Vue在numbers之前处理破折号时遇到问题。