Hogan与Algolia模板

时间:2017-06-14 18:31:52

标签: javascript templates algolia hogan.js instantsearch.js

我目前正在与Algolia + Hogan进行模板化。但是我经常遇到以下错误,我在CraftCMS上运行Algolia。

<script>

    var hitTemplate = Hogan.compile($('#hit-template').text());

    const search = instantsearch({
      appId: '{{ craft.searchPlus.getAlgoliaApplicationId }}',
      apiKey: '{{ craft.searchPlus.getAlgoliaSearchApiKey }}',
      indexName: 'products',
      urlSync: true
    });

    search.addWidget(
      instantsearch.widgets.hits({
        container: '#hits',
        templates: {
          empty: 'No results',
          item: hitTemplate
        },
        hitsPerPage: 6
      })
    );

    search.start();

</script>

这是我的热门模板。原始,因为CraftCMS会从。

中抛出错误
{% raw %}

  <script type="text/template" id="hit-template">
          {{#hits}}
          <li>
              <h4><a href="{{ absoluteUri }}">{{ title }}</a></h4>
              {{{ description }}}
              <p>{{#productImage}}</p>
                <img src="{{ url }}"/>
              {{/productImage}}
          </li>
          {{/hits}}
  </script>

{% endraw %}

通过控制台获取以下错误。

  

警告:道具类型失败:提供给的道具templates.item无效   t

     

Template.js:117 Uncaught Error:模板必须是'string'或   'function',是'object'(键:item)

2 个答案:

答案 0 :(得分:1)

没有必要自己编译模板,你可以这样做:

var hitTemplate = document.querySelector('#hit-template').textContent;

这应该可以解决你的问题。

答案 1 :(得分:1)

通过删除{{#hits}}块并添加@vvo answer来解决此问题。