我目前正在与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)
答案 0 :(得分:1)
没有必要自己编译模板,你可以这样做:
var hitTemplate = document.querySelector('#hit-template').textContent;
这应该可以解决你的问题。
答案 1 :(得分:1)
通过删除{{#hits}}块并添加@vvo answer来解决此问题。