包含html的语言环境/文字

时间:2019-03-13 12:45:43

标签: html vue.js translation nuxt.js

locale/lang.json我有

{
  "title": "Title",
  "image": "service-corporate_thumb-v2.jpg",
  "alt": "alt",
  "imageFooter": "Some caption %",
  "imageFooterCTA": "author",
  "imageFooterURL": "https://example.com/author",
},

我试图像这样生成作者:

<img :src="require(`~/assets/img/services/${service.image}`)" :alt="service.alt" class="mb-8">
<p>{{ service.imageFooter.replace('%', `<a href="${service.imageFooterURL}" target="_blank" class="primary-text">${service.imageFooterCTA}</a>`) }}</p>

但这会在生成的HTML中打印出来:

{{ service.imageFooter.replace('%', `${service.imageFooterCTA}`) }}

如何在{{expresion}}内部生成html?

1 个答案:

答案 0 :(得分:1)

您需要使用v-html在模板中生成html。

更多信息here

以您的示例为例

<p class="mb-8">
 <a v-html="service.imageFooter.replace('%', '<a href="$' + service.imageFooterURL + '" target="_blank" class="primary-text">$' + service.imageFooterCTA + '</a>')">
</p>

注意:

  • 具有v-html指令的标记将被替换,因此您可以使用任何内容,而不仅限于a
  • v-html的值必须是将在当前上下文中执行的有效JS代码。因此,我将标签内部视为字符串并删除了插值{