猎犬重置本地数据

bloodhound resetting local data

我正在使用 bloodhound 并尝试重置 local 选项。在我的网页上,如果用户选择两个选项之一,建议数据将会改变。但是当我设置本地数据时,我无法让建议出现。下面是我如何创建猎犬,将其设置为使用名为 'spray':

的数组
var dataSetBloodhound = new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  local: spray
});

因此,如果用户选择喷雾 jQuery 捕获它并尝试将喷雾数组设置为本地

 //If spray is picked  
        if( checked == "Spray") {
            // Clear the object
            dataSetBloodhound.clear();
            // Set the local 'data' to spray
            dataSetBloodhound.local = spray;
            // Reinit the object
            dataSetBloodhound.initialize()
            // Prints out the local data.(This prints out the data of spray)
            console.log(dataSetBloodhound.local);
            //etc }

如果用户选择肥料,除了传递 fertilizer 数组外,函数与上述相同。 如果我在列表上使用,我可以让它们工作,但我似乎无法交换 bloodhound 的本地数据。然而,在我 initialize() 我可以 console.log(dataSetBloodhound.local) 并且我可以在控制台中查看元素但是如果我尝试从下拉列表中获得建议它不起作用。有什么想法吗?

我觉得你需要重新初始化,你可以设置

if( checked == "Spray") {
        // Clear the object
        dataSetBloodhound.clear();
        // Set the local 'data' to spray
        dataSetBloodhound.local = spray;
        // Reinit the object
        dataSetBloodhound.initialize(true);
        // Prints out the local data.(This prints out the data of spray)
        console.log(dataSetBloodhound.local);

请查看文档https://github.com/twitter/typeahead.js/blob/master/doc/bloodhound.md