自定义Algolia instantSearch.js addWidget函数

Mah*_*eem 2 javascript algolia instantsearch.js

我想根据Algolia返回的结果编辑Hits容器,假设如下: hits-container

<div id="hits">
    <div class="col-md-2">{{ id }}</div>
    <div class="col-md-2">{{ user }}</div>
    <div class="col-md-2">{{ email }}</div>
    <div class="col-md-2">{{ date }}</div>

    <a href="/orders/{{id}}/edit" class="btn" >
        <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
    </a>
</div>
Run Code Online (Sandbox Code Playgroud)

addWidget函数:

<script type="text/javascript">
search.addWidget(
    instantsearch.widgets.hits({
        container: '#hits-container',
        templates: {
            item: $('#hits').html(),
            empty: 'No Orders',
        }
    })
);
</script>
Run Code Online (Sandbox Code Playgroud)

假设我想在日期小于当前日期时禁用编辑链接,addWidget将显示Algolia在此容器中返回的所有结果,现在我想在显示结果之前应用一些逻辑.有什么建议 ?

小智 9

InstantSearch.js小部件模板可以定义为Mustache字符串,也可以定义为接收小部件数据并返回字符串的函数.

此功能可能包含有关禁用编辑链接的逻辑.就像是:

templates: {
  item: function(data) {
    let className = "";
    if (data.rating < 4) {
      className = "bad-rating";
    }
    return (
      "<div" +
      ' class="' +
      className +
      '">' +
      data._highlightResult.title.value +
      "</div>"
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

这是一个完整的jsfiddle展示它.