Условный рендеринг V-HTML - PullRequest
       6

Условный рендеринг V-HTML

0 голосов
/ 11 февраля 2019

Просто интересно, есть ли здесь что-то, чего мне не хватает:

<span v-html="(shouldParseHTMLBool ? HTMLContent : '')">
  {{ contentWithoutParsedHTML }}
</span>

, похоже, не работает.

Я бы хотел, чтобы эта span интерпретировала HTML, только еслиshouldParseHTMLBool установлено на true.

Возможно ли это, или я должен использовать v-if?В этом тривиальном примере это не имеет большого значения, но с моими компонентами мне придется дублировать ~ 30 строк для каждого условия.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Лучше сделать как можно больше условий от шаблона.Вместо этого вы должны создать вычисляемый объект.

[шаблон]

<span v-html="computedContent"></span>

[скрипт]

...
computed: {
  computedContent: function () {
    return this.shouldParseHTMLBool ? this.HTMLContent : ''
  }
},
...
0 голосов
/ 11 февраля 2019

Директива v-html заменяет innerHTML элемента.В вашем случае {{ contentWithoutParsedHTML }} будет заменено значением (shouldParseHTMLBool ? HTMLContent : '')

. Вы можете сделать что-то вроде

<template>
<span v-html="conditionalParse"></span>
</template>
<script>
methods: {
conditionalParse: function () {
    return this.shouldParseHTMLBool ? this.HTMLContent : ''
}
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...