Массив шаблонов, пропускающий определенный тег шаблона рядом со встроенным элементом - PullRequest
1 голос
/ 26 сентября 2019

У меня есть массив шаблонов:

Массив шаблонов

Код, сгенерировавший массив:

generate_cell_collection() {

        const templates = this.matrix_data.map((item, index) => {
          var template_frag = [];
          var row = Math.floor(index / this.nrow);
          var col = index % this.ncol;
          var row_length = Math.floor(this.matrix_data.length / this.nrow);
          var cell_indices = '(' + row + ',' + col + ')';
          var updated = false;

          this.cell_collection.set(cell_indices, this.matrix_data[row * row_length + col]);

          if (col === 0) { template_frag.push(html`<tr>`); }

          template_frag.push(html`<cell-display .cell_indices=${cell_indices}
                                                .cell_value=${this.matrix_data[row * row_length + col]}
                                                updated=${updated}></cell-display>`);

          if (col === this.ncol - 1) { template_frag.push(html`</tr>`); }
          return template_frag;

            }).flat();

        return templates;

       }


    render() {

      var templates = this.generate_cell_collection();

      return html`
        <div id=${this.descriptor}>
        <table>
        <tbody>
        ${templates}
        </tbody>
        </table>
    </div>
    `;
    }

и код длявстроенный элемент:

export class CellDisplay extends LitElement {

  static get properties() {
      return {
        cell_indices: { type: String },
        cell_value: { type: Number },
        updated: { type: Boolean}
      }
  }

  constructor() {
    super();
  }

  render() {
  return html`
          <td><div id=${this.cell_indices}></div>${this.cell_value}</td>`;

  }

}

Однако при рендеринге шаблонов шаблон, содержащий тег </tr>, последовательно не включается с добавленным дополнительным комментарием.

Визуализация шаблонов

Я попытался пройти через отладчик, чтобы безуспешно определить основу для этого.Любые предложения о том, почему будет принята с благодарностью.

Спасибо.

1 Ответ

0 голосов
/ 27 сентября 2019

Это недопустимо:

html`<tr>`

Лит-HTML шаблоны анализируются независимо, что означает, что они должны быть правильно сформированы, чтобы вести себя так, как ожидается.Если у вас есть только открытие тега, то он будет закрыт парсером.

Вместо этого вам нужно написать:

html`<tr>${somethingHere}</tr>`
...