Свойства 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 }
    }
Другие вопросы по тегам