Vue JS - доступ к реквизитам через методы не удалось

Я передаю proop в компоненте (компонент 1) другому (компонент 2), связанный метод (который находится в компоненте 2 с переданным / данным значением props) сработал. Затем я попытался поместить метод внутри компонента 1 и изменить указанное значение в методе на внутреннее динамическое доказательство, он перестал работать.

Это наверняка проблема способа доступа:

wechat = document.getElementsByClassName(`this.iconsClassName`)[0].childNodes[2];

пожалуйста помоги!

<template>
  <div :class="iconsClassName">
    <div :class="iconClassName" v-for="(icon, index) in icons" :key="index">
      <a :href="icon.mediaLink" target="_blank">
        <svg style="width:16px;height:16px" viewBox="0 0 24 24">
          <path fill="#ffffff" :d="icon.icon" />
        </svg>
      </a>
    </div>
  </div>
</template>

<script>
export default {
  name: "mediaIcons",
  props: {
    iconsClassName: String,
    iconClassName: String,
    event: String
  },
  methods: {
    wechat() {
      let wechat = document.getElementsByClassName(this.iconsClassName)[0]
        .childNodes[2];
      wechat.addEventListener("click", alertWechat);
      function alertWechat() {
        alert("add me in weChat: eudora_neves");
        wechat.childNodes[0].removeAttribute("href");
      }
    },
  mounted: function() {
     this.wechat();
    }
  };
</script>

1 ответ

Если я правильно понял, вы хотите iconClassName быть кликабельным?

<div class="iconClassName">
<!-- content -->
</div>

Для этого вы можете использовать v-on атрибут Vue. @click="alertWechat" должен сделать свое дело. Кроме того, это сократит ваш код и сделает его более читабельным.

<template>
    <div :class="iconsClassName">
        <div 
            :class="iconClassName" 
            v-for="(icon, index) in icons" 
            :key="index" 
            @click="alertWechat"
        >
            <!-- content --> 
        </div>
    </div>
</template>

<script>
export default {
    name: "mediaIcons",
    props: {
        iconsClassName: String,
        iconClassName: String,
        event: String
    },
    methods: {
        function alertWechat() {
            //content
        }
    }
};
</script>
Другие вопросы по тегам