Ответы пользователя по тегу JavaScript
  • Почему не выполняется функция из подгруженного через ajax контента?

    @romazhan
    Вызов функции `jsDo` из тега `a` с использованием атрибута `onclick` работает только если функция объявлена в области видимости, в которой выполняется обработчик события `click`. Это означает, что если функция `jsDo` объявлена в модуле, то она не будет доступна для вызова из разметки HTML.

    Одна из возможных реализаций с учетом ООП - это создание экземпляра класса с нужными методами, в которые можно передавать необходимые параметры, и обработка события `click` у тега `a` через вызов этих методов.

    Например, можно создать класс `PopupHandler`, содержащий метод `open`, который будет отвечать за обработку нажатия на ссылку:
    class PopupHandler {
      private ajax: Ajax;
    
      constructor() {
        this.ajax = new Ajax();
      }
    
      open(action: string, title: string): void {
        this.ajax.setRequest({ action, title });
        this.ajax.resultProcessing('.popup__ajax');
      }
    }
    
    const handler = new PopupHandler();

    Теперь вы можете использовать экземпляр класса `PopupHandler` для обработки события `click` у тега `a`:
    <a href="#popup" class="popup-link" onclick="handler.open('two', '#TWO')">Попап №2</a>

    Таким образом, функция `open` будет вызываться при каждом нажатии на ссылку, и вы можете использовать ее для обработки запроса с нужными параметрами.

    Класс `PopupHandler` должен быть объявлен в области видимости, доступной из разметки HTML. Это может быть файл, подключенный к странице через тег script, или модуль, импортируемый с помощью директивы `import`.
    Ответ написан
    1 комментарий
  • Как отрисовать шаблон в custom element при повторной вставке на страницу?

    @romazhan Автор вопроса
    Use cloneNode, it should work:
    connectedCallback() {
        return this._shadow.appendChild(this._template.cloneNode(true));
    }
    Ответ написан
    Комментировать