@Nstk54

Как выделить часть текста?

Есть список постов, пользователь может выполнять по ним поиск. Задача - выделить ту часть текста, которую искал пользователь.

При попытке заменить Пример на <span>Пример</span> выдает на странице текст <span>Пример</span> вместо элемента span.

Как заставить vue отрендерить новый тег? Не хочется лезть через this.$el, но пока других вариантов у меня нет.
  • Вопрос задан
  • 261 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
computed: {
  highlightedText() {
    const { text, search } = this;
    return search
      ? text.split(RegExp(`(${search.replace(/[\\^$|.*?+{}()[\]]/g, '\\$&')})`, 'gi'))
      : [ text ];
  },
},

<template v-for="(n, i) in highlightedText">
  <mark v-if="i % 2">{{ n }}</mark>
  <template v-else>{{ n }}</template>
</template>

https://jsfiddle.net/0Lf6a5x9/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы