InstantSearch возвращает уникальный шаблон allItems во время выполнения - PullRequest
0 голосов
/ 19 сентября 2018

Можно ли отображать различные шаблоны "хитов" на основе элементов, возвращаемых из API?Например, предположим, что у меня есть два шаблона.

const _FooTemplate = `
    <table class="table table-striped table-hover table-responsive">
      <thead>
        <tr>
          <th>Part Number</th>
          <th>Description</th>
          <th>Available Quantity</th>
        </tr>
      </thead>
      <tbody>
      {{#hits}}
        <tr>
          <td style="white-space:nowrap"><a href="{{ url }}">{{ code }}</a></td>
          <td>{{ description }}</td>
          <td>{{ quantityAvailable }}</td>
        </tr>
      {{/hits}}
      </tbody>
    </table>
  `;

const _BarTemplate = `
    <table class="table table-striped table-hover table-responsive">
      <thead>
        <tr>
          <th>Part Number</th>
          <th>Description</th>
          <th>Available Quantity</th>
          <th>EXTRA COLUMN - 1</th>
          <th>EXTRA COLUMN - 2</th>
        </tr>
      </thead>
      <tbody>
      {{#hits}}
        <tr>
          <td style="white-space:nowrap"><a href="https://www.lyntron.com/{{ url }}">{{ code }}</a></td>
          <td>{{ description }}</td>
          <td>{{ quantityAvailable }}</td>
          <td>{{ EXTRA_DATA_1 }}</td>
          <td>{{ EXTRA_DATA_2 }}</td>
        </tr>
      {{/hits}}
      </tbody>
    </table>
  `;

И мой виджет поиска выглядит следующим образом ...

    search.addWidget(
        instantsearch.widgets.hits({
            container: '#hits',
            templates: {
                empty: 'No results',
                allItems: (function($hitsObject) {
                    return templateFactory($hitsObject);
                })
            },
            cssClasses: {
                item: 'col-lg-12 col-md-12 col-sm-12'
            }
        })
    );

Моя фабрика шаблонов имеет логику, чтобы определить,m вытаскивая _FooTemplate или _BarTemplate.

function templateFactory($hits) {
    //Logic to determine which template to return.  For now hardcode one.

    return _FooTemplate;
}

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

В настоящее время получаю это для результата ... enter image description here

И я желаю этого для результата,Правильно вынесено.enter image description here

...