v-html
заменяет содержимое элемента на обычный HTML , поэтому пользовательские элементы, используемые внутри замещающей строки, не компилируются в компоненты Vue.js.
Возможно, вы захотите проверить способ интерполяции компонентов, предложенный документацией VueI18n , который включает использование i18n
функциональных компонентов и строк шаблона.
Вот ответвлениепредоставленная скрипта, которая реализует этот подход: http://jsfiddle.net/u5vx1mLq/
В двух словах, i18n
компонент имеет path
опору, в которую вы можете ввести строку шаблона, и tag
опору, которая определяет тег, i18n
компонент должен быть заменен на.i18n
также имеет слот, который можно использовать для определения дочернего компонента, внутри которого вы можете интерполировать частичные строки шаблона.
Извините за неловкое объяснение, надеюсь, фрагмент кода пролил некоторый свет на этот вопрос:
const Home = {
template: `
<div>
<h1>{{ $t('home.title') }}</h1>
<i18n path="home.linkLabel" tag="label" for="home.linkText">
<router-link to="/post">{{ $t('home.linkText') }}</router-link>
</i18n>
</div>
`
};
const messages = {
en: {
home: {
title: 'Hello world',
linkText: 'this link',
linkLabel: 'Find all post by clicking {0}'
}
}
};