@danyadev
JavaScript разработчик

Почему при использовании директивы позже нельзя обновить текст в элементе?

У меня есть директива, с помощью которой можно сделать нормальное отображение emoji (из простого эмодзи делается img с картинкой этого эмодзи).
Вот сама директива:
Vue.directive('emoji', (el) => {
  el.innerHTML = emoji(el.innerHTML);
});


Вот часть template:
<div class="conversation_name" v-emoji>{{ chatName }}</div>


chatName - это computed свойство, которое время от времени изменяется, но с использованием директивы этого не происходит. Как сделать так чтобы все работало нормально?
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Vue.directive('emoji', (el, binding) => el.innerHTML = emoji(binding.value));

<div class="conversation_name" v-emoji="chatName"></div>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
CyberAP
@CyberAP
Фронтенд разработчик
Сделайте обычный компонент вместо директивы, он больше сюда подходит по своей сути.

export default {
  name: 'EmojiImage',
  props: {
    emoji: 'String'
  },
  computed: {
    image() {
      return ''; \\ Здесь сформируйте url картинки, это так же позволит использовать кэш, загружать их асинхронно
    }
  }

}

<template>
  <span class="emoji-image">
    <img :src="image" :alt="emoji" />
  </span>
</template>


<EmojiImage :emoji="emoji" />
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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