Не работает повторная вставка разметки на страницу при формировании ее через 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) без разметки внутри. В чем проблема, подскажите, пожалуйста?