Свойства vuejs по умолчанию установлены из vue-i18n
Я хотел бы установить свойство по умолчанию из словаря, как это:
props: {
title: {
type: String,
default: this.$t("basic.confirm"),
},
description: {
type: String,
}
}, ...
$t
vue-i18n, и я хотел бы установить свой заголовок из словаря, если он не определен в родительском классе. Но я получил ошибку:
Uncaught TypeError: this. $ T не является функцией
Подобная ошибка, если я перезагрузить без this
,
Uncaught ReferenceError: $t не определено
Но если я выйду из этого значения в методе монтирования, он будет работать хорошо.
Есть ли решение установки свойства по умолчанию из словаря?
Заранее спасибо!
2 ответа
Одним из решений является использование ключа или его части в качестве реквизита по умолчанию, например
title: {
type: String,
default: "basic.confirm", //or "confirm"
},
и в шаблоне:
<h1>{{ $t(title) }}</h1> //or $t("basic." + title)
редактировать: вы можете получить доступ к функции $t внутри
title: {
type: String,
default: function () {
return this.$t("basic.confirm")
}
},
Одно из решений - использовать ключ или его часть в качестве свойств по умолчанию, например
title: {
type: String,
default: "",
},
и в шаблоне:
<h1>{{ $t(titlep) }}</h1>
и в скрипте:
import { useI18n } from 'vue-i18n'
...
setup(props) {
const { t } = useI18n()
const titlep = computed(() =>
props.title ? props.title : t('basic.confirm')
)
return { titlep }
}