如何从 Twitter Bootstrap 和 Bloodhound 建议中获取 id 和 value?

2024-04-15

选择建议时如何从 typeahead.js 获取 id 和 value?

我有一个 json 如下:

[
    {id:1, name:'paul'}, 
    {id:2, name:'jim'}, 
    {id:3, name:'tom'}, 
    {id:4, name:'medor'}, 
    {id:5, name:'janzy'}
]

我创建了 Bloodhound 对象,如下所示:

var bh = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    prefetch: '//localhost/data/names.json',
    identify: function(datum){
        return datum.id;    
    }
});

我实例化了 typeahead 如下:

$('#name').typeahead({"highlight":true}, {
    "name":"name",
    "source":bh,
    "display":"value",
    "limit":10
})

我希望能够得到id当我提交表格时。当我提交以下示例时,我仅获得name属性。

我尝试通过javascript获取id,如下所示:

$('#name').bind('typeahead:select', function(ev, suggestion){
    console.log(suggestion);
})

but suggestion包含一个仅具有我选择的文本值的对象


你有几个选择。

我认为重写identity功能可能会满足您的需要。像这样的事情可能会让你到达那里:

identify: function(datum){
        return { id: datum.id, value: data.name};    
    }

I use remote对于我的实际生产代码并使用filter返回显示值和键值的选项。

它看起来像这样:

remote: {
        url: '/some/url',
        filter: function (data) {
            if (data) {
                return $.map(data, function (object) {
                    return { id: object.id, value: object.name};
                });
            } else {
                return {};
            }
        }
    }

您还可以尝试使用transform作为一部分发挥作用prefetch,看起来像这样:

prefetch: {
        url: '/some/url',
        transform: function (response) {
            if (response) {
                return $.map(response, function (object) {
                    return { id: object.id, value: object.name};
                });
            } else {
                return {};
            }
        }
    }

文档(可以在这里找到 https://github.com/twitter/typeahead.js/blob/master/doc/bloodhound.md) 有一定帮助,但对于显示更复杂的示例没有多大帮助。

我还尝试了这些例子(预先输入示例 http://twitter.github.io/typeahead.js/examples/)在我终于找到答案之前很久。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Twitter Bootstrap 和 Bloodhound 建议中获取 id 和 value? 的相关文章

随机推荐