Не работает повторная вставка разметки на страницу при формировании ее через class

//abstract-view.js

class AbstractView {
  constructor() {
    if (new.target === AbstractView) {
      throw new Error(`Can't instantiate AbstractView, only concrete one`);
    }
  }

  get template() {
    throw new Error(`Template is required`);
  }

  render() {
    const wrapper = document.createElement(`div`);
    wrapper.insertAdjacentHTML(`afterbegin`, this.template);
    console.log(this._element);
    
    return wrapper;
  }

  bind(element) {

  }

  get element() {
    if (this._element) {
      return this._element;
    }
    this._element = this.render();
    this.bind(this._element);
    return this._element;
  }
}

// greeting-view.js
// import AbstractView from '../abstract-view.js';

class GreetingView extends AbstractView {
  get template() {
    return `<div class="greeting central--blur">
    <div class="greeting__logo"><img src="img/logo_big.png" width="201" height="89" alt="Pixel Hunter"></div>
    <h1 class="greeting__asterisk">*</h1>
    <div class="greeting__challenge">
      <h3>Текст</h3>
      <p>Текст<br>
        Текст<br>
        Текст<br>
        Текст<br>
        Текст</p>
    </div>
    <div class="greeting__continue"><span><img src="img/arrow_right.svg" width="64" height="64" alt="Next"></span></div>
  </div>`;
  }

  bind() {
    const arrow = this.element.querySelector(`.greeting__continue > span > img`);

    arrow.addEventListener(`click`, this.onClick);
  }

  onClick() {

  }

}

//greeting.js
/*
import {
  showScreen,
  removeScreen
} from '../util.js';
import GreetingView from './greeting-view.js';
import rulesView from './../rules/rules.js';
import headerView from '../header/header.js';
*/

const greetingView = new GreetingView();

greetingView.onClick = () => {
  console.log(1);
};

document.body.appendChild(greetingView.element);
console.log(greetingView.element);

Доброго времени суток!

У меня есть класс AbstractView, который содержит общие методы для формирования разметки экрана приложения и последующей ее вставки на страницу. Логика приложения заключается в том, что по нажатию на кнопку далее у меня переключается экран и, соответственно, изменяется разметка. Все успешно отрабатывает, разметка вставляется, но, при определенном условии, мне необходимо использовать уже отработанную разметку повторно и тут возникает проблема: мой класс отдает мне пустой див (мой wrapper из метода render) без разметки внутри. В чем проблема, подскажите, пожалуйста?


Ответы (0 шт):