微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Twitter Typeahead 中,如果第一个数据源为空,有没有办法只显示来自第二个数据源的建议?

如何解决在 Twitter Typeahead 中,如果第一个数据源为空,有没有办法只显示来自第二个数据源的建议?

我在我的网站上使用预先输入的搜索框,该框目前使用 3 个 Bloodhound 数据源。数据源 #1 和 #2 是添加到本地存储的预取 JSON 文件。数据源 #3 是 Web API 查找。三个建议结果集以不同的格式显示。有人要求我只允许来自数据源 #2 的显示建议,如果数据源 #1 与用户的条目不匹配,这对于这种用法是有意义的。

一旦显示了所有 3 个建议结果,我就可以使用 CSS 轻松隐藏 set #2,但我不知道如何将其与 typeahead 文档中列出的任何自定义事件相关联。

另一种可能性可能是将数据源 #1 和 #2 合并到从 Web API 检索的另一个 sql 查询(如 #3)中。但我担心性能,因为它不会像 JSON 文件那样缓存在本地存储中。

有什么想法吗?谢谢!

//set data sources
// new Pagelist data source
var Pagelist = new Bloodhound({
    //list of topics in the json file
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('Name'),queryTokenizer: Bloodhound.tokenizers.whitespace,prefetch: {
        url: '/resources/shared/scripts/Pagelist20210327.json',cache: true
    }
});
var staticList = new Bloodhound({
    //list of topics in the json file
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('Name'),prefetch: {
        url: '/resources/shared/scripts/courselist20210327.json',cache: true
    }
});
var dynamicList = new Bloodhound({
    //list of courses specific to this site
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('Name'),remote: {
        url: '/DesktopModules/DnnSharp/DnnapiEndpoint/Api.ashx?method=GetTypeAheadSearch&query=%query',wildcard: '%query'
    }
});
$('#topSearch').typeahead({
        hint: true,highlight: true,minLength: 3
    },{
        name: 'Pagelist',display: 'Name',source: Pagelist.ttAdapter(),limit: 1,sufficient: 1,templates: {
            suggestion: function(data) {
                return '<div class="Pagelist">' + data.Name + '</div>';
            }
        }
    },{
        name: 'staticList',source: staticList.ttAdapter(),limit: 8,sufficient: 8,templates: {
            suggestion: function(data) {
                return '<div class="staticList">' + data.Name + '</div>';
            }
        }
    },{
        name: 'dynamicList',source: dynamicList.ttAdapter(),limit: 10,templates: {
            header: '<div class="dynamicListHdr"><strong>Go right to course...</strong></div>',//suggestCourseVal,suggestion: function(data) {
                return '<div class="dynamicList">' + data.Name + '</div>';
            }
        }
    })

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?