gpt4 book ai didi

javascript - 初始加载后无法更新 twitter typeahead.js 预取指纹

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:08:08 24 4
gpt4 key购买 nike

我在应用程序中使用 typeahead (0.10.1) 来返回使用 bloodhound 预取的客户端列表。我不知道如何使用新指纹更新/重新初始化 bloodhound,以便在插入新客户端后它将使用新指纹并因此包含新客户端。

系统是 ajax,所以我不能只在刷新时更改名称,我试图按照下面的 reinitializeclient() 向它传递另一个指纹,但它不起作用:

var clientthumbprint = "initialname";
var clients = new Bloodhound({
limit: 5,
prefetch:{
url: '/urltofeed/',
thumbprint:getthumbprint()
},
datumTokenizer: function(d) {
return Bloodhound.tokenizers.whitespace(d.label);
},
queryTokenizer: Bloodhound.tokenizers.whitespace
});
clients.initialize();

function reinitializeclient(newthumbprint){
//This is called when a client is saved
clientthumbprint = newthumprint;
clients.initialize(); //this didn't work
}

function getthumbprint(){
return clientthumbprint;
}

$('#search_user').typeahead({
minLength: 2,
},
{
displayKey: 'label',
source: clients.ttAdapter()
})

有人知道我做错了什么吗?

编辑:使用@jharding 提到的拉取请求更新我的预输入文件后,我可以重置它,但不能重新初始化。使用以下内容:

function initialize_clients(){
clients = new Bloodhound({
limit: 5,
prefetch:{
url: '/pathtojson/',
thumbprint:getthumbprint()
},
datumTokenizer: function(d) {
return Bloodhound.tokenizers.whitespace(d.label);
},
queryTokenizer: Bloodhound.tokenizers.whitespace
});
clients.initialize();
};

function resetclients(){
clientthumbprint = 'somenewthumbprint';
clients.reset();//this works - after running nothing will return in search
initialize_clients();//this is not working
}

function getthumbprint(){
return clientthumbprint;
}

最佳答案

你可能已经有了答案,但我想我会添加对我有用的代码

//This seems to refresh my prefetch data
clients.clearPrefetchCache();

//not sure whether setting to true does anything
//though, but according to the bloodhound.js it should force a reinitialise
clients.initialize(true);

希望对你有帮助

关于javascript - 初始加载后无法更新 twitter typeahead.js 预取指纹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21891343/

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