gpt4 book ai didi

Javascript - 在 Algolia 自动完成中使用 timeago 函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:26:32 25 4
gpt4 key购买 nike

我正在尝试使用这些 example 中的 timeAgo 函数.我把它放在一个文件中,并在我的 View 中这样调用它:

<script src="{{ asset('js/landing-page/jquery.min.js') }}" type="text/javascript"></script>
<script src="{{ asset('js/landing-page/bootstrap.min.js') }}" type="text/javascript"></script>
<script src="{{ asset('js/landing-page/material.min.js') }}"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.4.0/js/swiper.min.js"></script>
<script type="text/javascript" src="{{ asset('js/slider.js') }}"></script>
<script type="text/javascript" src="{{ asset('js/timeago.js') }}"></script>

<!-- Include AlgoliaSearch JS Client and autocomplete.js library -->
<script src="https://cdn.jsdelivr.net/algoliasearch/3/algoliasearch.min.js"></script>
<script src="https://cdn.jsdelivr.net/autocomplete.js/0/autocomplete.min.js"></script>
<script type="text/javascript" src="{{ asset('js/autocomplete.js') }}"></script>

<!-- Control Center for Material Kit: activating the ripples, parallax effects, scripts from the example pages etc -->
<script src="{{ asset('js/landing-page/material-kit.js') }}" type="text/javascript"></script>

Algolia 自动完成模板所在的部分脚本如下所示:

{
source: autocomplete.sources.hits(videos, { hitsPerPage: 5 }),
displayKey: 'title',
templates: {
header: '<div class="aa-suggestions-category">Videos</div>',
suggestion: function(suggestion) {
return '<span>'
+ '<a href="/player/' + suggestion.id + '">'
+ '<div class="media">'
+ '<div class="media-left">'
+ '<img class="media-object" src="https://s3.eu-central-1.amazonaws.com/myUrl/' + suggestion.video_id + '_1.jpg">'
+ '</div>'
+ '<div class="media-body">'
+ '<p>' + suggestion._highlightResult.title.value + '<small><abbr class="timeago" title="' + suggestion.created_at + '">' + suggestion.created_at + '</abbr></small>' + '</p>'
+ '<small> ' + '</small>'
+ '</div>'
+ '</div>'
+ '</a>'
+'</span>';
}

但是时间戳仍然可见而且不是时间之前。控制台中未显示任何错误。我做错了什么?

最佳答案

Autocomplete 在 DOM 准备好后很长时间才添加 html 代码,因此 timeago.js 代码在仍然没有任何自动完成代码时执行。

您必须使用 autocomplete:updated 事件再次调用 timeAgo 函数 在呈现 新代码后,不要等待 60 或 10 秒.

//attach custom event handler - autocomplete:updated triggers when dataset is rendered
autocomplete('#search-input', { hint: false }, [
{
source: ...,
displayKey: ...,
templates: {
suggestion: function(suggestion) {
...
}
}
}
]).on('autocomplete:updated', function(event, suggestion, dataset) {
timeAgo('.timeago');
});

此解决方案会导致 timeAgo javascript 超时的许多实例。在 timeAgo 之前用全局 timeAgoTimeout = setTimeout(timeAgo, 60000);clearTimeout(timeAgoTimeout) 修复它。

您可以在 fiddle 中找到使用动态元素的示例 - http://jsfiddle.net/mge45ugr/

关于Javascript - 在 Algolia 自动完成中使用 timeago 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41965003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com