«ошибка во время оценки» для вычисляемого свойства - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть проблема, когда вычисляемое свойство только иногда работает. Иногда имеет значение / ошибка 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 голосов
/ 25 апреля 2018

Возможно, проблема связана с this.wp.template.Вы уверены, что это всегда строка, для которой можно вызывать lowerCase?Если вычисленное свойство будет возвращать что-то еще, кроме строки, это может вызвать проблему.

Кроме того, у Vue возникают проблемы с обработкой дефисов перед числами .

.
...