Size: a a a

Nuxt.js — русскоговорящее сообщество

2021 January 14

SS

Stanislav S in Nuxt.js — русскоговорящее сообщество
сейчас такой метод
btn() {
     var _this = this;
     this.$nextTick(function () {
       try {
         Array.prototype.forEach.call(
           this.$refs["mframe"].getElementsByClassName("btn-al"),
           function (element) {
             element.addEventListener("click", function (event) {
               event.preventDefault();
               _this.chat_create();
             });
             element.classList.replace("btn-al", "btn-al-event");
           }
         );
       } catch (err) {}
     });
   },
источник

SS

Stanislav S in Nuxt.js — русскоговорящее сообщество
вызывается из хука head но не все кнопки стабильно цепляет
источник

СК

Сергей Rekry† Крупки... in Nuxt.js — русскоговорящее сообщество
Stanislav S
какие есть варианты повесить глобальный обработчик в layout что бы цеплял все кнопки в том числе динамические из различных компонентов и страниц
создать отдельный компонент для вывода кнопок, реализовать в нём чтобы набор классов нужных элементов(а) зависел от параметров(а) хранящихся в сторе
выводить везде кнопки этим компонентом
управлять параметроами от которых зависят классы кнопок централизовано из стора с помощью мутаций
источник

SS

Stanislav S in Nuxt.js — русскоговорящее сообщество
а если кнопка динамическая через rawHTML
источник

СК

Сергей Rekry† Крупки... in Nuxt.js — русскоговорящее сообщество
ничего страшного
источник

СК

Сергей Rekry† Крупки... in Nuxt.js — русскоговорящее сообщество
просто сделайте эту динамику внутри компонента кнопки
источник

СК

Сергей Rekry† Крупки... in Nuxt.js — русскоговорящее сообщество
и она будет ререндерится
источник

SS

Stanislav S in Nuxt.js — русскоговорящее сообщество
ок спасибо сошлось
источник

AS

Alexandr Sachishin in Nuxt.js — русскоговорящее сообщество
Stanislav S
сейчас такой метод
btn() {
     var _this = this;
     this.$nextTick(function () {
       try {
         Array.prototype.forEach.call(
           this.$refs["mframe"].getElementsByClassName("btn-al"),
           function (element) {
             element.addEventListener("click", function (event) {
               event.preventDefault();
               _this.chat_create();
             });
             element.classList.replace("btn-al", "btn-al-event");
           }
         );
       } catch (err) {}
     });
   },
объясните мне глупому, зачем обращаться к прототипу массива, а не сразу к референциям
источник

SS

Stanislav S in Nuxt.js — русскоговорящее сообщество
речь   о refs?
источник

СК

Сергей Rekry† Крупки... in Nuxt.js — русскоговорящее сообщество
Stanislav S
речь   о refs?
this.$refs["mframe"].getElementsByClassName("btn-al").forEach((element) => ...)
видимо там стоит задача писать без стрелочных функций
источник

AS

Alexandr Sachishin in Nuxt.js — русскоговорящее сообщество
Вы перебираете массив/псевдомассив через прототип класса массив передавая ему контекст. почему нельзя перебрать сразу все this.$refs["mframe"]?
источник

SS

Stanislav S in Nuxt.js — русскоговорящее сообщество
у меня есть элементы внутри rawHTML которые не реактивные
источник

СК

Сергей Rekry† Крупки... in Nuxt.js — русскоговорящее сообщество
Stanislav S
у меня есть элементы внутри rawHTML которые не реактивные
реактивные это свойства обьектов, а не элементы
источник

СК

Сергей Rekry† Крупки... in Nuxt.js — русскоговорящее сообщество
по этому вы и используете getElementsByClassName, это понятно
источник

СК

Сергей Rekry† Крупки... in Nuxt.js — русскоговорящее сообщество
источник

AS

Alexandr Sachishin in Nuxt.js — русскоговорящее сообщество
может еще попробовать переделать на делегирование события. если там будет 100500 кнопок, будет столько же обработчиков
источник

СК

Сергей Rekry† Крупки... in Nuxt.js — русскоговорящее сообщество
ну вот я передал event в chat_cheate
дальше event.target и т.п.
источник

СК

Сергей Rekry† Крупки... in Nuxt.js — русскоговорящее сообщество
но если у каждая кнопка одним компонентом, то как я понимаю event не нужен
источник

AS

Alexandr Sachishin in Nuxt.js — русскоговорящее сообщество
не, тут изначально можно обратиться this как к body или к самому body, и при клике сверять цель с кнопкой
источник