У меня проблема, когда вычисляемое свойство работает только иногда. Иногда имеет значение / ошибку 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>
Не уверен, может ли это помочь: forum.vuejs.org/t/missing-error-details-for-computed-propert ies /…





Проблема может быть связана с this.wp.template. Вы уверены, что это всегда строка, для которой можно вызывать нижний регистр? Если вычисляемое свойство вернет что-то еще, кроме строки, это может вызвать проблему.
Кроме того, у Vue есть проблемы с обработкой тире до числа.
Спасибо за ответ. Да, this.wp.template всегда будет строкой или неопределенным.
где тире перед числами? :) Не вижу, но это может быть проблемой.
Посмотрите на значение this.wp.template, я не вижу, где он установлен. Кроме того, это может относиться к: является частью, когда вы устанавливаете компонент. Вот где я также столкнулся с этим, и в конце концов проблема заключалась в том, что я пытался установить компонент через: is на undefined. Это привело к ошибке оценки.
Всегда строка неопределенная? Зачем вообще проверять на нуль?