Javascript 初始加载后无法更新twitter typeahead.js预回迁指纹

Javascript 初始加载后无法更新twitter typeahead.js预回迁指纹,javascript,twitter-bootstrap-3,typeahead.js,bloodhound,Javascript,Twitter Bootstrap 3,Typeahead.js,Bloodhound,我在一个应用程序中使用typeahead(0.10.1)来返回使用“猎犬”预取的客户端列表。我无法确定如何使用新的指纹更新/重新初始化嗜血犬,以便在插入新客户端后,它将使用新的指纹,从而包括新客户端 系统是ajax,所以我不能在刷新时更改名称,我正试图在reinitializeclient()中按照下面的说明传递另一个指纹,但它不起作用: var clientthumbprint = "initialname"; var clients = new Bloodhound({ limit

我在一个应用程序中使用typeahead(0.10.1)来返回使用“猎犬”预取的客户端列表。我无法确定如何使用新的指纹更新/重新初始化嗜血犬,以便在插入新客户端后,它将使用新的指纹,从而包括新客户端

系统是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提到的pull请求更新我的typeahead文件后,我可以让它重置,但不能重新初始化。使用以下方法:

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);

希望对我有所帮助

在我的例子中,我使用预回迁从url中获取结果作为JSON数据, 并且只想清除预取数据(因为我需要在添加其他数据后清除它)


clients.initialize(true)方法对我有效

这对于我清除本地/预取/远程数据并重新加载数据总是有效的:

//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);
clients.clear();
clients.clearPrefetchCache();
clients.clearRemoteCache();
clients.initialize(true);

您现在不能重新初始化猎犬,但该能力将存在于v0.10.2中。这里是相关的拉请求:太好了!我抓取了那个请求,并用grunt更新了我的文件作为测试。我可以重置它,但我似乎无法重新初始化它:尝试在重新初始化时将
true
传递给initialize方法。我仍在处理我想要的API,如果您有任何想法,应该将它们发布到pull请求上。@J如果我通过了try,它将重新初始化,但它仍在使用旧数据。clients.initialize(true);--任何想法。将我的想法发布到pull请求。基本上,我希望能够再次指定要预取的源。谢谢。这个项目似乎已经被放弃了——你知道有谁捡到它进行积极的开发吗?不,我不知道是否有人捡到了它,但我花了几天时间处理这里描述的问题,现在最重要的是我修复了问题,哈哈