gpt4 book ai didi

javascript - Twitter Typeahead.js - 在选择时删除数据

转载 作者:数据小太阳 更新时间:2023-10-29 03:49:19 26 4
gpt4 key购买 nike

我使用的是 typeahead.js 0.9.3,它运行顺畅。我的问题是是否有可能在“typeahead:selected”事件(或任何事件,就此而言)上从数据集中删除数据。

我在页面加载时使用 Typeahead 的 prefetch 选项获取数据集中的数据。我知道我可以调用 $('selector').typeahead('destroy') 并重新初始化 typehead 并在 prefetch 中使用 filter code> 对象,但必须重新调用数据似乎相当重量级(我们没有在本地存储中缓存数据)。

我想我正在寻找类似于 filter 函数的东西来遍历数据数组并删除先前选择的(或所有选择的)数据。看起来 typeahead 中没有公共(public)函数可以执行此操作,但也许我错过了。

我已经通读了 typeahead 的文档并在此处进行了搜索,但没有找到答案。

编辑:我通过从 prefetch 切换到 local 并使用 AJAX post 调用来获取数据,设置它来解决眼前的问题作为全局变量,然后将其传递给 typeahead,我可以在其中从全局数据数组中添加/删除项目,然后根据需要销毁/重新初始化 typeahead。远非理想,但它有效。

最佳答案

您可以在任何 Bloodhound 数据集上使用 Typeahead 0.10 实现此功能,无论是远程数据集、预取数据集还是本地数据集。

只需跟踪哪些数据已独立于 Bloodhound 数据集被选中,不要使用 Bloodhound#ttAdapater() 作为您的预输入源。 ttAdapter 方法只是 Bloodhound#get(query, cb) 的包装器 — 因此,与其直接调用 get(query, cb) 并使用自定义回调来检查针对当前选择的每个建议。

这是一个 JSFiddle — http://jsfiddle.net/likeuntomurphy/tvp9Q/

var selected = [];

var select = function(e, datum, dataset) {
selected.push(datum.val);
$("#selected").text(JSON.stringify(selected));
$("input.typeahead").typeahead("val", "");
}

var filter = function(suggestions) {
return $.grep(suggestions, function(suggestion) {
return $.inArray(suggestion.val, selected) === -1;
});
}

var data = new Bloodhound({
name: 'animals',
local: [{ val: 'dog' }, { val: 'pig' }, { val: 'moose' }],
datumTokenizer: function(d) {
return Bloodhound.tokenizers.whitespace(d.val);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,

// custom suggestion filter is applied after Bloodhound
// limits the set of possible suggestions
// see comment by Basti below
limit: Infinity
});

data.initialize();

$('input.typeahead').typeahead(null,
{
name: 'animals',
displayKey: 'val',
/* don't use
source: data.ttAdapter(), */
source: function(query, cb) {
data.get(query, function(suggestions) {
cb(filter(suggestions));
});
},
templates: {
empty: '<div class="empty-message">No matches.</div>'
}
}
).bind('typeahead:selected', select);

关于javascript - Twitter Typeahead.js - 在选择时删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21044906/

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