Присвоить результат метода класса параметру конструктора - PullRequest
4 голосов
/ 16 января 2020

Необходимо обновить значение конструктора на основе операции, выполненной с методом increaseNumber. Это оригинальный код:

function Div() {
    this.numCount = 0;
    this.increaseNumber();
    this.element = document.createElement( 'div' );   
    this.element.innerHTML = "<p class='counter'>" + this.numCount +"</p>";
  }

Div.prototype.increaseNumber = function() {
    this.numCount++;
    setTimeout(function() {
      this.increaseNumber();   
    }.bind(this), 1000);
  } 

Я пытался присвоить this.numCount = this.increaseNumber(), также пытался поместить this.increaseNumber внутри значения внутреннего HTML, но ничего не работает.

Я продолжаю Консоль правильных значений, число увеличивается, но я просто не могу отобразить внутри div.

1 Ответ

3 голосов
/ 16 января 2020

После изменения значения numCount ( модель ) вам необходимо обновить DOM ( view ), указав новое значение («re-render») .

Попробуйте извлечь часть, которая присваивает значение this.element.innerHTML, в другую функцию и вызвать ее как в конструкторе, так и при increaseNumber():

function Div() {
    this.numCount = 0;
    this.element = document.createElement( 'div' );
    this.increaseNumber();
    this.renderElement();
}

Div.prototype.renderElement = function renderElement() {
    this.element.innerHTML = "<p class='counter'>" + this.numCount +"</p>";
}

Div.prototype.increaseNumber = function() {
    this.numCount++;
    setTimeout(function() {
      this.increaseNumber();   
      this.renderElement();
    }.bind(this), 1000);
} 
...